c - Beendet den Status eines im Hintergrund laufenden Programms

Ich habe eine Aufgabe, in der ich eine Mini-Shell erstellen muss, die in der Lage ist, viele Dinge zu erledigen, einschließlich Job-Kontrolle. Ich habe es geschafft, neue Jobs mit fork und execvp zu erstellen. Ich möchte aber auch die Exit-Codes der von execvp ausgeführten Programme erhalten. Nach dem, was ich in anderen Posts nachgeschlagen habe, kann ich dies mithilfe von tunif(WIFEXITED(status)).

Wir müssen den Prozess aber auch im Hintergrund ausführen, wenn der Benutzer '&' mit dem Prozessnamen in der Shell eingibt. Es macht also keinen Sinn, auf den übergeordneten Prozess zu warten, während das untergeordnete Programm im Hintergrund beendet wird. Kann ich einen Interrupt einrichten, der den übergeordneten Prozess darüber informiert, dass der untergeordnete Prozess beendet wurde? Dann kann ich das benutzenif(WIFEXITED(status)) Anweisung, um den Exit-Code zu erhalten.

Beispiel

sleep 100 &

wird im Hintergrund ausgeführt, während ich gleichzeitig andere Shell-Befehle im Vordergrund ausführen kann.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage