aaalso, dann packe ich mal aus: das problem, wenn man SIGCHLD blockiert und mit waitpid() wartet, bis der vordergrundprozess beendet ist, ist, dass sich alle gestorbenen hintergrundprozesse anstauen laut aufgabenstellung soll das einsammeln der zombies aber _unmittelbar_ erfolgen also muss man es ein bisschen anders machen ah! * nordicgrass (nordic@vpn-054e.vpn.informatik.uni-erlangen.de) hat #faui2k6 betreten man muss sich auf jeden fall global merken, ob momentan ein vordergrundprozess läuft und welche pid & befehlszeile der hat dann muss man den SIGCHLD-handler so einrichten, dass er bei jedem SIGCHLD nachguckt, ob der gestorbene prozess der vordergrundprozess war falls ja: seinen exitstatus ausgeben und global markieren, dass es wieder keinen vordergrundprozess mehr gibt so viel zum signal-handler, zurück zum vaterprozess nach dem fork() man muss auf jeden fall das SIGCHLD vor dem fork()en mit sigprocmask() blockieren dann trägt man die daten des vordergrundprozesses in diese globale struktur (oder was man sich halt eingerichtet hat) ein sodann erstellt man mit sigfillset() und sigdelset() eine maske, die alle signale bis auf SIGCHLD enthält... ... und lässt eine schleife laufen, in der sigsuspend() auf eben diese maske so oft aufgerufen wird, bis in der globalen variable wieder drinsteht, dass es keinen vordergrundprozess mehr gibt und schlussendlich muss man SIGCHLD wieder deblockieren [EOF] (also kein wait() oder waitpid() im hauptprozess, sondern nur im signalhandler) alle mann erschlagen? hmpf, klingt nach arbeit bisschen umbauen halt