使用fork函數創建單個子進程

#include <unistd.h>

pid_t fork(void);

返回值:

fork函數的返回值成功有兩個

1)返回子進程的pid;  (>0的值)//父進程

2)返回0         //子進程

返回-1,則失敗。

返回值有2個的實質:

調用fork()函數後,創建了一個子進程後,----->共有了父子兩個進程,如果不加以區分,二者執行的代碼都是一樣的,包括調用fork()之前的部分(子進程也包含了fork()前的代碼,但是不執行,只有父進程執行了)---->

父進程執行fork函數,返回子進程的id;

子進程執行fork()函數後,返回0.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
    pid_t pid;
    printf("begin\n");
    pid = fork();
    if(pid == -1)
    {
        perror("fork");
        exit(1);
    }else if(pid==0)    //子進程
    {
        printf("this is child,pid = %u,ppid = %u\n",getpid(),getppid());
    }else    //父進程
    {
        printf("this is parent,pid = %u,ppid = %u\n",getpid(),getppid());
        sleep(1);//等待子進程先結束
    }
    printf("end\n");
        
    return 0;
}

 

運行結果:

begin執行了一次;

end執行了2次。 

父進程也有父進程,父進程的父進程是bash

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章