Waitpid in c ++ creando problemi
-
13-11-2019 - |
Domanda
Sto usando WaitPid come dato
waitpid (Childpid, & Status, Wnohang);
Questo viene utilizzato in un programma all'interno di un ciclo infinito che biforca quando necessario e il genitore attende che il processo figlio torni. Ma recentemente mi sono imbattuto in un problema in cui nel programma esce dopo averlo stampato al CERR ..
Waitpid: nessun processo per bambini
Questo è sempre l'ultimo registro del programma prima che si blocchi/esca. So che non è stato segfault o altro perché ho scritto una funzione di traceback che stampa gli ultimi 10 indirizzi a cui il programma ha accettato. Quindi significa che il programma è uscito dal ciclo dopo aver scoperto che non esiste un processo per bambini? O c'è qualcosa di sinistro al lavoro qui?
Soluzione
Immagino che ciò che sta accadendo qui sia che la chiamata del sistema fork non riesce a non perdere la mancanza di voci disponibili nella tabella di processo. Puoi fare un perror sull'output della forcella. Penso che dovrebbe essere risorsa_temporary_unavalabilible.