_cwait

다른 프로세스가 종료 될 때까지 기다립니다.

중요중요

이 API를 실행 하는 응용 프로그램에서 사용할 수 있는 Windows 런타임.자세한 내용은 /zw에 지원 되는 CRT 함수.

intptr_t _cwait( 
   int *termstat,
   intptr_t procHandle,
   int action 
);

매개 변수

  • termstat
    에 지정 된 프로세스의 결과 코드를 저장할 버퍼 포인터 또는 NULL입니다.

  • procHandle
    핸들을 대기 하는 프로세스 (전에 종료 하는 프로세스 즉, _cwait 을 반환할 수 있습니다).

  • action
    NULL: Windows 운영 체제의 응용 프로그램에서 무시 됩니다. 다른 응용 프로그램에 대 한:에서 수행 하는 작업 코드 procHandle.

반환 값

지정 된 프로세스를 성공적으로 완료 되 면 지정 된 프로세스의 핸들을 반환 하 고 설정 termstat 지정 된 프로세스에 의해 반환 되는 결과 코드입니다.그렇지 않으면 – 1을 반환 하 고 설정 하는 errno 는 다음과 같이 합니다.

설명

ECHILD

지정 된 프로세스가 없습니다 있는지 procHandle 올바르지 않거나 호출 되는 GetExitCodeProcess 또는 WaitForSingleObject API에 실패 했습니다.

EINVAL

action이(가) 잘못되었습니다.

이러한 및 다른 반환 코드에 대 한 자세한 내용은 참조 하십시오 errno, _doserrno, _sys_errlist, _sys_nerr.

설명

_cwait 함수에서 제공 하는 지정 된 프로세스의 프로세스 ID 종료 기다립니다 procHandle.값을 procHandle 전달 되는 _cwait 호출에 의해 반환 되는 값 이어야 합니다의 _spawn 지정 된 프로세스를 생성 하는 함수입니다.프로세스 ID를 전에 종료 하는 경우 _cwait 라고 하는데, _cwait 즉시 반환 합니다._cwait에 대 한 알려진된 다른 프로세스를 대기 하는 프로세스에서 사용할 수 유효한 핸들 (procHandle) 존재 합니다.

termstat지정 된 프로세스의 반환 코드를 저장할 버퍼를 가리킵니다.값을 termstat 를 호출 하 여 지정 된 프로세스가 정상적으로 종료 여부를 나타냅니다.는 ExitProcess API.ExitProcess지정 된 프로세스를 호출 하는 경우 내부적으로 호출 됩니다 exit 또는 _exit, 반환 main, 또는 끝에 도달 main.통해 다시 전달 되는 값에 대 한 자세한 내용은 termstat을 참조 하십시오 GetExitCodeProcess.경우 _cwait 에 대 한 NULL 값을 사용 하 여 호출 됩니다 termstat에 지정 된 프로세스의 반환 코드가 저장 되지.

action 매개 변수가 부모-자식 관계는 이러한 환경에서 구현 되지 않기 때문에 Windows 운영 체제에서 무시 됩니다.

하지 않는 한 procHandle -1 또는-2 (처리는 현재 프로세스나 스레드), 핸들을 닫아야 합니다.따라서이 이런 경우 반환 된 핸들을 사용 하지 않습니다.

요구 사항

루틴

필수 헤더

선택적 헤더

_cwait

<process.h>

<errno.h>

자세한 호환성에 대 한 내용은 호환성.

예제

// crt_cwait.c
// compile with: /c
// This program launches several processes and waits
// for a specified process to finish.
//
#define _CRT_RAND_S

#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>


// Macro to get a random integer within a specified range
#define getrandom( min, max ) (( (rand_s (&number), number) % (int)((( max ) + 1 ) - ( min ))) + ( min ))

struct PROCESS
{
   int     nPid;
   char    name[40];
} process[4] = { { 0, "Ann" }, { 0, "Beth" }, { 0, "Carl" }, { 0, "Dave" } };

int main( int argc, char *argv[] )
{
   int termstat, c;
   unsigned int number;

   srand( (unsigned)time( NULL ) );    // Seed randomizer

   // If no arguments, this is the calling process
   if( argc == 1 )
   {
      // Spawn processes in numeric order
      for( c = 0; c < 4; c++ ){
         _flushall();
         process[c].nPid = _spawnl( _P_NOWAIT, argv[0], argv[0], 
                             process[c].name, NULL );
      }

      // Wait for randomly specified process, and respond when done 
      c = getrandom( 0, 3 );
      printf( "Come here, %s.\n", process[c].name );
      _cwait( &termstat, process[c].nPid, _WAIT_CHILD );
      printf( "Thank you, %s.\n", process[c].name );

   }
   // If there are arguments, this must be a spawned process 
   else
   {
      // Delay for a period that's determined by process number
      Sleep( (argv[1][0] - 'A' + 1) * 1000L );
      printf( "Hi, Dad. It's %s.\n", argv[1] );
   }
}
  
  
  
  
  
  
  
  
  
  

해당 .NET Framework 항목

System::Diagnostics::Process::WaitForExit

참고 항목

참조

프로세스 및 환경 제어

_spawn, _wspawn 함수