Nome
aspetta, waitpid: attendi la fine del processo
Sinossi
#includere pid_t wait (int * stato );pid_t waitpid (pid_t pid , int * stato , int opzioni );
Ilaspettare la funzione sospende l'esecuzione del processo corrente fino all'uscita di un figlio o fino alla consegna di un segnale la cui azione è di terminare il processo corrente o chiamare una funzione di gestione del segnale. Se un bambino è già uscito dal momento della chiamata (un cosiddetto processo "zombi"), la funzione ritorna immediatamente. Le risorse di sistema utilizzate dal bambino vengono liberate. Ilwaitpid la funzione sospende l'esecuzione del processo corrente fino a quando un figlio, come specificato dal pid l'argomento è terminato, o fino a quando non viene consegnato un segnale la cui azione è di terminare il processo corrente o chiamare una funzione di gestione del segnale. Se un bambino come richiesto da pid è già uscito dal momento della chiamata (un cosiddetto processo "zombie"), la funzione ritorna immediatamente. Le risorse di sistema utilizzate dal bambino vengono liberate. Il valore di pid può essere uno di: < -1 che significa attendere un processo figlio il cui ID del gruppo di processi è uguale al valore assoluto di pid . -1 che significa aspettare un processo figlio; questo è lo stesso comportamento cheaspettare mostre. 0 che significa attendere un processo figlio il cui ID del gruppo di processi è uguale a quello del processo chiamante. > 0 che significa aspettare il figlio il cui ID di processo è uguale al valore di pid . Il valore di opzioni è un OR di zero o più delle seguenti costanti: WNOHANG che significa restituire immediatamente se nessun bambino è uscito. WUNTRACED che significa anche restituire per i bambini che vengono fermati e il cui stato non è stato segnalato. (Per le opzioni solo per Linux, vedi sotto). Se stato non èNULLO, aspettare owaitpid memorizzare le informazioni sullo stato nella posizione indicata da stato . Questo stato può essere valutato con i seguenti macro (queste macro prendono il buffer delle statistiche (aint) come argomento --- non un puntatore al buffer!): WIFEXITED ( stato ) è diverso da zero se il bambino esce normalmente. WEXITSTATUS ( stato ) valuta gli otto bit meno significativi del codice di ritorno del figlio terminato, che può essere stato impostato come argomento di una chiamata aUscita() o come argomento per a ritorno dichiarazione nel programma principale. Questa macro può essere valutata solo seWIFEXITEDrestituito diverso da zero. WIFSIGNALED ( stato ) restituisce true se il processo figlio è terminato a causa di un segnale che non è stato rilevato. WTERMSIG ( stato ) restituisce il numero del segnale che ha causato la conclusione del processo figlio. Questa macro può essere valutata solo seWIFSIGNALED restituito diverso da zero. WIFSTOPPED ( stato ) restituisce true se il processo figlio che ha causato il ritorno è attualmente fermo; questo è possibile solo se la chiamata è stata eseguita utilizzandoWUNTRACED. WSTOPSIG ( stato ) restituisce il numero del segnale che ha causato l'arresto del bambino. Questa macro può essere valutata solo seWIFSTOPPED restituito diverso da zero. Alcune versioni di Unix (ad esempio Linux, Solaris, ma non AIX, SunOS) definiscono anche una macroWCOREDUMP ( stato ) per verificare se il processo secondario ha eseguito il dump del core. Usa questo solo in #ifdef WCOREDUMP … #endif. L'ID di processo del bambino che è uscito, o zero seWNOHANG è stato utilizzato e nessun bambino era disponibile, oppure -1 per errore (nel qual caso errno è impostato su un valore appropriato). ECHILD se il processo specificato in pid non esiste o non è figlio del processo di chiamata. (Questo può accadere per il proprio figlio se l'azione per SIGCHLD è impostata su SIG_IGN. Vedere anche la sezione LINUX NOTES sui thread.) EINVAL se la opzioni argomento non valido. EINTR SeWNOHANG non è stato impostato e un segnale sbloccato o aSIGCHLD è stato catturato. Descrizione
Valore di ritorno
Errori




