Pisanie własnej powłoki zabawki i wystąpienie bumpa próbującego zaimplementować kontrolę zadań.Brak błędu procesu potomnego z waitpid() podczas oczekiwania na grupę procesów
Ustawiam grupę procesową dziecka, zarówno w potomstwie, jak i rodzicu, za pomocą setpgid. Moje połączenie oczekujące to:
pid = waitpid(-pid, &status, 0)
Jednak waitpid zwraca -1, a perror mówi "Brak procesu potomnego". Jednak wydaje się, że za każdym razem czeka. Również wyjście ps wygląda tak, jakby było uruchamiane z powłoki. Ponieważ proces rodzica ps jest kbsh, jak bym się spodziewał.
% ps -o pid,ppid,pgrp,session,tpgid,comm
Forking
In Parent: Setting process group to 20809 of process 20809 with setpgid
In Child Processes, pid of child process is 20809
in Child: Setting process group to 20809 of process 20809 with setpgid
Requesting that Process Group 20809 becomes the foreground process with tcsetpgrp
Waiting for job with process group 20809
PID PPID PGRP SESS TPGID COMMAND
12002 32573 12002 12002 20809 zsh
20808 12002 20808 12002 20809 kbsh
20809 20808 20809 12002 20809 ps
Wait Error: No child processes
Restoring Shell process group 20808 to forground
Ktoś widzi, co robię źle? może dodać więcej kodu, jeśli trzeba ...
wydaje się stało z -1, a także -pid –
Czy ignorning SIGCHILD, że jest powód, to nie działa :-P –