在C (Linux)中创建僵尸进程



我的任务是创建僵尸进程。我的代码是这样的:

#include <unistd.h>  
#include <stdlib.h>  
#include <stdio.h>  
#include <sys/types.h>  
#include <sys/wait.h>  
int main() {  
pid_t pid = fork();  
if (pid == -1) {  
printf("errorn");  
}  
else if (pid == 0) {  
printf("Child %dn", getpid());  
printf("Parents %dn", getppid());  
printf("Waiting for my Child to completen");  
exit(0);  
}  
else {  
sleep(5);  
printf("Parent %dn",getpid());  
}  
return 0;  
}  

当我执行gcc并使用./a.out执行文件时,我得到以下输出:

Child 25097
Parents 25096
等待我的孩子完成
Parent 25096(几秒钟后)

我的任务是创建一个僵尸进程,并在父进程中打印出子进程的退出状态。每件事都让我有点困惑,因为这是我第一次使用Linux和c。

你对我解决这个任务有什么建议吗?因为我不确定是否一切都是对的。我也试着玩wait(),waitpid()WEXITSSTATUS(),但我不确定。我使用ps x命令检查是否有不同的输出,但我没有注意到任何变化。

Thanks in advance:)

这段代码将成功创建一个僵尸进程。

调用fork后,子进程打印几行并退出,而父进程休眠5秒。这意味着当父进程处于睡眠状态时,您将有一个大约5秒钟的僵尸进程。

当sleep结束时,父进程打印一些内容并退出。一旦父进程退出,子进程将被init进程继承,它将为子进程设置wait,并使它的pid从pid列表中消失。

您也可以在父进程中使用wait,在这种情况下,在父进程调用wait之前,子进程是一个僵尸进程。

相关内容

  • 没有找到相关文章

最新更新