Linux 僵尸进程

如果一个进程已经终止,但是它的父进程尚未调用 wait() 或 waitpid() 对它进行清理,这时的进程状态称为僵死状态,处于僵死状态的进程称为僵尸进程(zombie process)。任何进程在刚终止时都是僵尸进程,正常情况下,僵尸进程都立刻被父进程清理了。

#include

<span style="color: #0000ff">int main(<span style="color: #0000ff">void<span style="color: #000000">)
{
<span style="color: #0000ff">int i = <span style="color: #800080">100<span style="color: #000000">;
pid_t pid=<span style="color: #000000">fork();
<span style="color: #0000ff">if(pid < <span style="color: #800080">0<span style="color: #000000">)
{
perror(<span style="color: #800000">"<span style="color: #800000">fork failed.<span style="color: #800000">"<span style="color: #000000">);
exit(<span style="color: #800080">1<span style="color: #000000">);
}
<span style="color: #0000ff">if(pid > <span style="color: #800080">0<span style="color: #000000">)
{
printf(<span style="color: #800000">"<span style="color: #800000">This is the parent process. My PID is %d.\n<span style="color: #800000">"<span style="color: #000000">,getpid());
<span style="color: #0000ff">for(; i > <span style="color: #800080">0; i--<span style="color: #000000">)
{
sleep(<span style="color: #800080">1<span style="color: #000000">);
}
}
<span style="color: #0000ff">else <span style="color: #0000ff">if(pid == <span style="color: #800080">0<span style="color: #000000">)
{
printf(<span style="color: #800000">"<span style="color: #800000">This is the child process. My PID is: %d. My PPID is: %d.\n<span style="color: #800000">"<span style="color: #000000">,getpid(),getppid());
}
<span style="color: #0000ff">return <span style="color: #800080">0<span style="color: #000000">;
}

$ zomprocdemo.c -o zomprocdemo

$ ./zomprocdemo

#include

<span style="color: #0000ff">int main(<span style="color: #0000ff">void<span style="color: #000000">)
{
pid_t pid;
pid =<span style="color: #000000"> fork();
<span style="color: #0000ff">if (pid < <span style="color: #800080">0<span style="color: #000000">)
{
perror(<span style="color: #800000">"<span style="color: #800000">fork failed<span style="color: #800000">"<span style="color: #000000">);
exit(<span style="color: #800080">1<span style="color: #000000">);
}
<span style="color: #0000ff">if (pid == <span style="color: #800080">0<span style="color: #000000">) {
<span style="color: #0000ff">int<span style="color: #000000"> i;
<span style="color: #0000ff">for (i = <span style="color: #800080">3; i > <span style="color: #800080">0; i--<span style="color: #000000">)
{
printf(<span style="color: #800000">"<span style="color: #800000">This is the child\n<span style="color: #800000">"<span style="color: #000000">);
sleep(<span style="color: #800080">1<span style="color: #000000">);
}
<span style="color: #008000">//<span style="color: #008000"> exit with code 3 for test.
exit(<span style="color: #800080">3<span style="color: #000000">);
}
<span style="color: #0000ff">else<span style="color: #000000">
{
<span style="color: #0000ff">int<span style="color: #000000"> stat_val;
wait(&<span style="color: #000000">stat_val);
<span style="color: #0000ff">if<span style="color: #000000"> (WIFEXITED(stat_val))
{
printf(<span style="color: #800000">"<span style="color: #800000">Child exited with code %d\n<span style="color: #800000">"<span style="color: #000000">,WEXITSTATUS(stat_val));
}
}
<span style="color: #0000ff">return <span style="color: #800080">0<span style="color: #000000">;
}

相关文章

LinuxSystemd服务(2021.07.09)目录LinuxSystemd服务(2021.07...
opidrvabortingprocessM002ospid(3561)asaresultofORA-600OR...
安装好haproxy后,配置正确无法启动,看日志:Feb1309:32:50clu...
Linux 系统与服务管理工具Systemd被曝存在3大漏洞,影响几乎...
一、systemd查看日志文件有隐藏 systemctlstatusSERVICE-l-...
不要在mp目录下保存文件,该目录会定期清理文件mp默认保存10...