#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
int main(void)
{
pid_t pid;
if((pid=fork())<0) //創建子進程失敗
{
perror("創建子進程失敗.\n"); //創建子進程失敗
exit(0);
}
else if(pid==0) //進入子進程
{
if((pid=fork())<0) //在子進程中繼續創建一個子進程
{
perror("創建子進程失敗.\n");
exit(0);
}
else if(pid>0) //當前創建子進程的父進程,即第一個子進程
{
exit(0); //退出第一個子進程
}
else
{
sleep(2); //休眠2秒
printf("這是第二個子進程, parent pid=%d \n", getppid());
exit(0);
}
}
if(waitpid(pid, NULL, 0)!=pid) //判斷到底是那個進程退出了
{
perror("waitpid銷毀進程失敗.\n");
exit(0);
}
exit(0);
}免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。