编写一unix 程序,防止僵尸进程的出现.
答案:2 悬赏:60 手机版
解决时间 2021-04-02 15:40
- 提问者网友:风月客
- 2021-04-01 22:42
编写一unix 程序,防止僵尸进程的出现.
最佳答案
- 五星知识达人网友:大漠
- 2021-04-01 23:20
子进程结束后,如果它的结束状态没有被父进程用wait,waitpid等系统调用来获取了话,此时这个子进程就叫zombie process.
下面的程序就演示了如何通过wait调用来获取子进程退出状态。在用户第一次回车之前,通过ps命令,应该可以看到子进程是 defunct 状态 (也就是zombie态),而一旦按下回车,wait被调用,此时通过ps命令就无法看到那个zombie了。所以防止zombie process的方法就是通过wait/waitpid等调用来解决。对这个程序有什么问题,可以baidu hi我。
#include
#include
#include
int main()
{
int pid;
pid = fork();
if (pid == 0)
{
printf("This is child process,pid=%d,bye!\n", getpid());
exit(0);
}
sleep(1);
printf("Press return to remove zombie process\n");
getchar();
wait(NULL);
printf("Press return to exit\n");
getchar();
return 0;
}
下面的程序就演示了如何通过wait调用来获取子进程退出状态。在用户第一次回车之前,通过ps命令,应该可以看到子进程是 defunct 状态 (也就是zombie态),而一旦按下回车,wait被调用,此时通过ps命令就无法看到那个zombie了。所以防止zombie process的方法就是通过wait/waitpid等调用来解决。对这个程序有什么问题,可以baidu hi我。
#include
#include
#include
int main()
{
int pid;
pid = fork();
if (pid == 0)
{
printf("This is child process,pid=%d,bye!\n", getpid());
exit(0);
}
sleep(1);
printf("Press return to remove zombie process\n");
getchar();
wait(NULL);
printf("Press return to exit\n");
getchar();
return 0;
}
全部回答
- 1楼网友:底特律间谍
- 2021-04-02 00:29
编写一个自己的守护进程,定时去检查系统中是否有僵尸进程,如果发现有,就将其杀死
可以结合系统命令ps,kill等
不过有2个问题,首先有些进程是可能不响应信号的,kill可能杀不掉
另外,好像init进程本身就有这个功能?
可以结合系统命令ps,kill等
不过有2个问题,首先有些进程是可能不响应信号的,kill可能杀不掉
另外,好像init进程本身就有这个功能?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯