Sdílet prostřednictvím


_cwait

Vyčká, dokud neskončí jiný proces.

Důležitá poznámkaDůležité

Toto rozhraní API nelze použít v aplikacích, které jsou spuštěny v Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW.

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

Parametry

  • termstat
    Ukazatel na vyrovnávací paměti, kde bude uložen výsledek kód určený proces, nebo hodnotu NULL.

  • procHandle
    Popisovač procesu pro čekání na (to znamená, že proces, který má ukončit před _cwait může vrátit).

  • action
    NULL: Ignorována aplikací operačního systému Windows. pro jiné aplikace: kód akce provádět na procHandle.

Vrácená hodnota

V případě, že určený proces byl úspěšně dokončen, vrátí popisovač určený proces a nastaví termstat výsledek kódu, který je vrácený určený proces.V opačném případě vrátí hodnotu –1 a nastaví errno takto.

Value

Description

ECHILD

Neexistuje žádný určený proces procHandle je neplatný nebo volání GetExitCodeProcess nebo WaitForSingleObject rozhraní API se nezdařilo.

EINVAL

action je neplatná.

Další informace o těchto i jiných návratové kódy, viz Kód chyby, _doserrno, _sys_errlist a _sys_nerr.

Poznámky

_cwait Funkce čeká na ukončení procesu ID určený proces, poskytované procHandle.Hodnota procHandle který je předán do _cwait by měla být hodnota, která je vrácena pomocí volání _spawn funkce, která vytvořila určený proces.Pokud ID procesu ukončí před _cwait se nazývá _cwait vrátí hodnotu okamžitě._cwaitlze jakýkoli proces čekání pro jiné známé proces který platný popisovač (procHandle) existuje.

termstatbody do vyrovnávací paměti, kde budou uloženy návratový kód určený proces.Hodnota termstat označuje, zda určený proces ukončen obvykle voláním ExitProcess rozhraní API.ExitProcessje volána interně v případě, že určený proces volá exit nebo _exit, vrátí z main, nebo je dosaženo konce main.Další informace o hodnotu, která je předána zpět termstat, viz GetExitCodeProcess.Pokud _cwait je volána pomocí hodnotu NULL pro termstat, návratový kód určený proces není uložen.

action Parametr je ignorován v operačního systému Windows, protože vztahy nadřízený podřízený, nejsou implementovány v těchto prostředích.

Není-li procHandle -1 nebo -2 (zpracovává aktuální proces nebo podproces), bude uzavřena na úchyt.Proto v takovém případě nepoužívejte Vrácený popisovač.

Požadavky

Byla zahájena rutina

Požadované záhlaví

Volitelné záhlaví

_cwait

<process.h>

<errno.h>

Další informace o kompatibilitě v tématu Kompatibilita.

Příklad

// 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] );
   }
}
  
  
  
  
  
  
  
  
  
  

Ekvivalent v rozhraní .NET Framework

System::Diagnostics::Process::WaitForExit

Viz také

Referenční dokumentace

Proces a řízení prostředí

_spawn funkce _wspawn