Ho creato un programma utilizzando fork()
e exec*()
. Il problema è che non riesco a determinare l'esito positivo o negativo di exec()
dal processo padre perché si trova su un processo secondario separato. Penso che il tipo di segnalazione possa essere usato per verificare questo stato, ma non ne ho idea.Approccio standard per determinare il successo o il fallimento di fork/exec (mentre il genitore è in esecuzione contemporaneamente)?
- Qual è il modo consigliato/standard/ampiamente utilizzato per verificare questo?
- E quali sono le insidie di cui mi devo preoccupare mentre lo faccio?
Domanda Particolare Aggiornamento (Ci scusiamo per omissione di dettaglio importante)
voglio mantenere entrambi i processi sono in esecuzione, quindi non posso solo aspettare l'uscita del processo figlio. In altre parole, desidero ricevere una notifica sul processo figlio "exec
esito positivo o negativo.
Si sa che è possibile interrogare lo stato secondario senza bloccare usando 'waitpid' e l'opzione' WNOHANG'? A seconda del tuo sistema potresti anche avere 'wait3' e' wait4' che capiscono anche questo flag. O vuoi segnalare qualcosa al genitore mantenendo il bambino in esecuzione (come con i semafori IPC)? – DarkDust
@DarkDust Voglio mantenere entrambi i processi in esecuzione e desidero ricevere la notifica dello stato 'exec' del processo figlio. (successo o fallimento) Oh hai chiarito la mia domanda. Grazie :) – Eonil
possibile duplicato di [Che cosa può causare il fallimento di exec? Cosa succede dopo?] (Http://stackoverflow.com/questions/3703013/what-can-cause-exec-to-fail-what-happens-next) (In particolare, vedi [la risposta da "R."] (http://stackoverflow.com/questions/3703013/#3703179)) – Nemo