【Linux】探索Linux进程状态 | 僵尸进程 | 孤儿进程
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
pid_t pid;
// 创建一个子进程
pid = fork();
if (pid < 0) {
// 如果fork()调用失败
perror("fork failed");
exit(1);
}
if (pid == 0) {
// 子进程
printf("子进程PID: %d, 父进程PID: %d\n", getpid(), getppid());
// 子进程正常退出,不会成为僵尸进程
exit(0);
} else {
// 父进程
sleep(5); // 让父进程暂停5秒钟,以便于观察僵尸进程
printf("父进程等待子进程结束...\n");
wait(NULL); // 等待子进程结束,通常这是清理僵尸进程的方法
printf("父进程结束!\n");
}
return 0;
}
这段代码首先调用fork()
创建一个子进程。在子进程中,我们打印出子进程和父进程的PID,然后正常退出,不会成为僵尸进程。父进程则在5秒后结束,通过调用wait()
函数来等待子进程结束,以避免子进程变成僵尸进程。这是处理僵尸进程的一种常见方法。
评论已关闭