_cwait

Başka bir işlem kadar bekler.

Önemli notÖnemli

Bu API yürütün uygulamalarda kullanılamaz Windows Çalışma Zamanı.Daha fazla bilgi için /ZW ile desteklenmiyor CRT işlevleri.

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

Parametreler

  • termstat
    Belirtilen işlem sonucu kodunu depolanacağı arabellek için işaretçi veya NULL.

  • procHandle
    Beklemesi işlemi için tanıtıcı (yani, önce sonlandırmak için olan işlemi _cwait döndürebilir).

  • action
    NULL: Windows işletim sistemi uygulamaları tarafından göz ardı; diğer uygulamalar için: gerçekleştirmek için eylem kodu procHandle.

Dönüş Değeri

Belirtilen işlem başarıyla tamamlandığında, belirtilen işlem tanıtıcısı döndürür ve ayarlar termstat için belirtilen işlem tarafından döndürülen sonuç kodu.Aksi takdirde, -1 döndürür ve ayarlar errno şekildedir.

Değer

Açıklama

ECHILD

Belirtilen işlem yok var, procHandle geçersiz veya çağrısı GetExitCodeProcess veya WaitForSingleObject API başarısız oldu.

EINVAL

action geçersizdir.

Bu ve diğer dönüş kodları hakkında daha fazla bilgi için bkz: errno, _doserrno, _sys_errlist, and _sys_nerr.

Notlar

_cwait İşlevi bekler tarafından sağlanan işlem kimliği belirtilen işleminin sonlandırılması için procHandle.Değerini procHandle için geçirilen _cwait çağrı tarafından döndürülen değer olmalıdır _spawn belirtilen işlem oluşturulan işlev.İşlem kimliği önce sona ererse _cwait çağrılır, _cwait hemen döndürür._cwaitkendisi için diğer bilinen işlemi için beklenecek herhangi bir işlem tarafından kullanılan geçerli bir tanıtıcı (procHandle) bulunmaktadır.

termstatBelirtilen işlem dönüş kodunu depolanacağı bir arabellek işaret ediyor.Değerini termstat belirtilen işlem normal olarak Windows çağırarak sona olup olmadığını gösteren ExitProcess API.ExitProcessBelirtilen işlem çağırırsa dahili olarak çağrılır exit veya _exit, döndürür main, veya sonuna ulaştığında main.Geri geçirilir değeri hakkında daha fazla bilgi için termstat, bakın GetExitCodeProcess.Varsa _cwait için bir NULL değer kullanılarak çağrılan termstat, belirtilen işlem dönüş kodunu değil depolanır.

action Parametresi, Windows işletim sistemi tarafından yoksayıldığından, çünkü bu ortamlarda üst-alt ilişkileri uygulanmadı.

Sürece procHandle -1 veya -2 (geçerli işlem veya iş parçacığı işleme), tanıtıcı kapatılacak.Bu nedenle, bu durumda, döndürülen tanıtıcı kullanmayın.

Gereksinimler

Yordam

Gerekli başlık

İsteğe bağlı üstbilgi

_cwait

< process.h >

< errno.h >

Uyumluluk hakkında daha fazla bilgi için bkz. Uyumluluk.

Örnek

// 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 Eşdeğeri

System::Diagnostics::Process::WaitForExit

Ayrıca bkz.

Başvuru

Süreç ve Ortam Denetimi

_spawn, _wspawn İşlevleri