Zrobiłem program przy użyciu fork()
i exec*()
. Problem polega na tym, że nie mogę stwierdzić sukcesu lub niepowodzenia exec()
z procesu nadrzędnego, ponieważ jest on w oddzielnym procesie potomnym. Myślę, że rodzaj sygnalizacji może być użyty do sprawdzenia tego stanu, ale nie mam o tym pojęcia.Standardowe podejście do określania powodzenia lub niepowodzenia fork/exec (gdy rodzic działa jednocześnie)?
- Jaki jest zalecany/standardowy/powszechnie stosowany sposób sprawdzenia tego?
- A jakie są pułapki, którymi muszę się przejmować, robiąc to?
Pytanie Szczegóły Aktualizacja (przepraszam za pominięcie ważnych szczegółach)
chcę zachować oba procesy są uruchomione, więc nie można po prostu czekać wyjściu z procesu potomnego. Innymi słowy, chcę być powiadamiany o procesie potomnym "exec
sukces lub porażka.
Czy wiesz, że możesz sprawdzać status podrzędny bez blokowania, używając opcji 'waitpid' i' WNOHANG'? W zależności od twojego systemu możesz mieć również 'wait3' i' wait4', które również rozumieją tę flagę. A może chcesz zasygnalizować coś rodzicowi, utrzymując dziecko w ruchu (jak przy semaforach IPC)? – DarkDust
@DarkDust Chcę, aby oba procesy były uruchomione i chcę otrzymywać powiadomienie o procesie potomnym "exec". (sukces lub porażka) Och, oczyściłeś moje pytanie. Dzięki :) – Eonil
możliwy duplikat [Co może spowodować awarię exec? Co dalej?] (Http://stackoverflow.com/questions/3703013/what-can-cause-exec-to-fail-what-happens-next) (W szczególności zobacz [odpowiedź od "R."] (http://stackoverflow.com/questions/3703013/#3703179)) – Nemo