вопрос по моему страшно глупый, но справится я не смог. вот код:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
pid_t ch;
if((ch = fork()) == 0)
{
// ..... do something ....
exit(0);
}
sleep(20);
return 0;
}
так вот, при засыпании на sleep(20), в порождённый процесс не умирает, а виден как зомби, и не пропадает, пока жив родитель. а надо чтоб умер. т.к. слип сидит только для отладки, на самом деле весь форк будет сидеть в цикле. родитель не должен умирать никогда, стало быть зомби будут плодится и плодится. зомби не появляется, если к if-у добавить else wait(&status);, но тогда родитель ждет смерти порожденного процесса, а это не надо...
P.S. чтото жутковато вышло с терминами, но вы меня поняли :)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум fork() (2020)
- Форум fork(), exec(), wait() (2020)
- Форум Чтение выхлопа процесса без ожидания его завершения (2019)
- Форум [fork()+getpid()] Мааа...ленький вопросик (2008)
- Форум fork + popen. Залипание на wait при SIGCHLD (2019)
- Форум по поводу man,exec и fork (2010)
- Форум Семафоры (2005)
- Форум деление на ноль и сигфолт, без падения программы (2009)
- Форум программный ввод пароля в ssh (2010)
- Форум Передача имени файла дочернему процессу (2017)