[编程] C语言Linux系统编程-等待终止的子进程(僵死进程)
发布时间:2020-12-13 14:17:34 所属栏目:Linux 来源:网络整理
导读:1. 如果一个子进程在父进程之前结束,内核会把子进程设置为一个特殊的状态,处于这种状态的进程称为僵死进程 当父进程获取了子进程的信息后,子进程才会消失。 pid_t wait(int *status); pid #include /spanspan style="color: #0000ff"gt;int/span ret=span
1. 如果一个子进程在父进程之前结束,内核会把子进程设置为一个特殊的状态,处于这种状态的进程称为僵死进程 当父进程获取了子进程的信息后,子进程才会消失。 pid_t wait(int *status); pid #include
</span><span style="color: #0000ff">int</span> ret=<span style="color: #000000">fork();
</span><span style="color: #0000ff">if</span>(ret><span style="color: #800080">0</span><span style="color: #000000">){
pid</span>=<span style="color: #000000">getpid();
ppid</span>=<span style="color: #000000">getppid();
printf(</span><span style="color: #800000">"</span><span style="color: #800000">我是父进程,pid=%d,ppid=%d,我新建的子进程pid=%dn</span><span style="color: #800000">"</span><span style="color: #000000">,pid,ppid,ret);
</span><span style="color: #0000ff">int</span><span style="color: #000000"> status;
</span><span style="color: #0000ff">int</span> sonPid=wait(&<span style="color: #000000">status);
printf(</span><span style="color: #800000">"</span><span style="color: #800000">我的子进程,pid=%d,终止了n</span><span style="color: #800000">"</span><span style="color: #000000">,sonPid);
}</span><span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(ret==<span style="color: #800080">0</span><span style="color: #000000">){
sleep(</span><span style="color: #800080">2</span><span style="color: #000000">);
pid</span>=<span style="color: #000000">getpid();
ppid</span>=<span style="color: #000000">getppid();
printf(</span><span style="color: #800000">"</span><span style="color: #800000">我是子进程,pid=%d,ppid=%d n</span><span style="color: #800000">"</span><span style="color: #000000">,ppid);
}</span><span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(ret==-<span style="color: #800080">1</span><span style="color: #000000">){
perror(</span><span style="color: #800000">"</span><span style="color: #800000">fork</span><span style="color: #800000">"</span><span style="color: #000000">);
}
} 输出: pid=22315,ppid=12479, pid=22316,ppid=22315 pid=22316, 2. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |