c - status wyjścia programu uruchomionego w tle

Mam zadanie, w którym muszę stworzyć mini-powłokę, która potrafi wykonywać wiele rzeczy, w tym kontrolę pracy. Udało mi się utworzyć nowe zadania za pomocą fork i execvp. Ale chcę też uzyskać kody wyjścia programów uruchamianych przez execvp. Z tego, co sprawdziłem z innych postów, mogę to zrobić za pomocąif(WIFEXITED(status)).

Ale jesteśmy również zobowiązani do uruchomienia procesu w tle, jeśli użytkownik wprowadzi '&' z nazwą procesu w powłoce. Nie ma więc sensu czekać, aż proces nadrzędny będzie czekał, aż program potomny zakończy działanie w tle. Czy istnieje jakieś przerwanie, które mogę skonfigurować, które powiadamia proces nadrzędny o zakończeniu procesu potomnego? Wtedy mogę użyćif(WIFEXITED(status)) instrukcja, aby uzyskać kod wyjścia.

Przykład

sleep 100 &

będzie działać w tle, podczas gdy mogę jednocześnie wykonywać inne polecenia powłoki na pierwszym planie.

questionAnswers(1)

yourAnswerToTheQuestion