Exportar (0) Imprimir
Expandir todo
div
EOF
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_cwait

Espera hasta que otro proceso finaliza.

Nota importante Importante

Esta API no se puede utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones CRT no compatibles con /ZW.

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

termstat

Puntero a un búfer donde el código de salida del proceso especificado se almacenará, o NULL.

procHandle

El identificador al proceso a esperar (es decir, el proceso que tiene que finalizar antes de que _cwait pueda cambiar).

action

NULL: Omitido por aplicaciones para el sistema operativo Windows; para otras aplicaciones: código de acción a realizar en procHandle.

Cuando el proceso especificado se haya completado correctamente, devuelve el identificador de proceso especificado y establece termstat a código de resultado devuelto por el proceso especificado. De lo contrario, devuelve – 1 y establece errno como sigue.

Valor

Descripción

ECHILD

Ningún proceso especificado existe, procHandle no es válido, o la llamada a GetExitCodeProcess o WaitForSingleObject API no.

EINVAL

action no es válido.

Para obtener más información sobre éstos y otros códigos de retorno, vea errno, _doserrno, _sys_errlist, y _sys_nerr.

La función de _cwait espera la finalización del identificador del proceso especificado proporcionado por procHandle. El valor de procHandle que se pasa a _cwait debe ser el valor devuelto por la llamada a la función de _spawn que creó el proceso especificado. Si el identificador de proceso finaliza antes de que se llame a _cwait, _cwait vuelve inmediatamente. _cwait se puede usar en cualquier proceso para esperar cualquier otro proceso conocido que un identificador válido (procHandle) existe.

puntos de termstat a un búfer donde el código de retorno de proceso especificado se almacenará. El valor de termstat indica si el proceso especificado finalizó normalmente llamando a ExitProcess API. ExitProcess se llama internamente si el proceso especificado llama exit o _exit, cambia de main, o alcanza el final de main. Para obtener más información sobre el valor que se devuelve de con termstat, vea GetExitCodeProcess. Si _cwait se realiza mediante un valor NULL para termstat, el código de retorno de proceso especificado no se almacena.

El parámetro de action es omitido por el sistema operativo Windows porque las relaciones de elementos primario- elemento secundario no se implementan en estos entornos.

A menos que procHandle sea -1 o -2 (identificadores a la actual procesan o subproceso), el identificador se cierra. Por consiguiente, en esta situación, no utilice el identificador devuelto.

Rutina

Encabezado necesario

Encabezado opcional

_cwait

<process.h>

<errno.h>

Para obtener más información de compatibilidad, vea Compatibilidad.

// 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] );
   }
}
Hello, papá.  Es anuncio.  Alcanzado aquí, anuncio.  Gracias, anuncio.  Hello, papá.  Es Beth.  Hello, papá.  Es Carl.  Hello, papá.  Es Dave. 

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft