Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
int main(){
pid_t our_child;
int i;
signal(SIGCHLD, killchld);
for(i=1;i< 0xFF;i++){
our_child= fork();
if(our_child == 0){
return 0;
}
}
getchar();
return 0;
}
В данном примере мы устанавливаем обработчик сигнала SIGCHLD вызовом signal. В качестве первого параметра signal имеет сигнал (точнее сказать – номер сигнала), который мы собираемся обрабатывать, а второй параметр – имя нашей функции-обработчика. Но здесь есть одна небольшая тонкость – если в качестве второго параметра установим SIG_IGN, то наши зомби будут умирать, но как сказано в man: «POSIX (3.3.1.3) не определяет, что случается при SIGCHLD, который установлен в SIG_IGN». То есть если у нас следующий пример будет работать в Linux – не значит, что он будет работать в BSD. Следовательно, таким способом пользоваться не рекомендуется.
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
int main(){
pid_t our_child;
signal(SIGCHLD, SIG_IGN); //так делать не стоит
int i;
for(i=1;i< 0xFF;i++){
our_child= fork();
if(our_child == 0){
return 0;
}
}
getchar();
return 0;
}
Способ избежать зомби в большинстве случаев зависит от ситуации. Важно помнить, что зомби нужны забота и внимание. И только тогда они не будут вас беспокоить.