关于僵尸进程的练习。
请参考linux c一站式学习,此节内容http://learn.akae.cn/media/ch30s03.html#id2867242
可以设置父进程忽略SIGCHLD信号,或者在SIGCHLD信号的处理函数中调用wait函数,即可获取子进程的退出状态,且销毁僵尸进程。
1)调用wait函数
#include <unistd.h> #include <stdlib.h> #include <iostream> #include <signal.h> #include <sys/wait.h> using namespace std; void sig_deal(int signo){ cout<<"I'm called"<<signo<<endl; int stat; wait(&stat); cout<<"status = "<<stat<<endl; } int main(void) { pid_t pid=fork(); if(pid<0) { cout<<"error"<<endl; exit(1); } if(pid>0) { /* parent */ signal(SIGCHLD,sig_deal); while(1); } /* child */ return 1; }
2)使用SIG_IGN
#include <unistd.h> #include <stdlib.h> #include <iostream> #include <signal.h> #include <sys/wait.h> using namespace std; void sig_deal(int signo){ cout<<"I'm called"<<signo<<endl; int stat; wait(&stat); cout<<"status = "<<stat<<endl; } int main(void) { pid_t pid=fork(); if(pid<0) { cout<<"error"<<endl; exit(1); } if(pid>0) { /* parent */ signal(SIGCHLD,SIG_IGN); while(1); } /* child */ return 1; }
相关推荐
GodLong 2020-10-10
老谢的自留地 2020-07-19
容数据服务集结号 2020-05-19
IsanaYashiro 2020-03-01
linuxhh 2020-01-19
LUOPING0 2020-01-04
dasheng0 2017-04-01
beiya 2019-05-09
Jesuslovesme 2019-09-02
batoom 2017-04-01
傻小烨 2013-01-05
nydiaxiangxiang 2012-12-31
secondid 2012-12-10
lfjjia 2012-01-08
yegen00 2011-05-19
xufuangchao 2011-05-06
wzllai 2019-07-01
执迷不悔 2018-10-14
Dongxiem 2017-12-23