fork() 系統呼叫

fork() 是一個系統呼叫。fork 用於從正在執行的程序建立子程序,該程序是父程序的副本(執行 fork() 的程序)。子程序源自父程序。父節點和子節點都有不同的地址空間,每個地址空間都獨立於對變數所做的更改。

子程序有自己的 PID(程序標識)。子程序的 PPID(父程序 ID)與父程序的 PID 相同。

格式:

標頭檔案:#include <unistd.h>
功能宣告:pid_t fork(void);

fork() 不需要任何輸入引數。

成功建立子程序後,子程序的 pid 將返回到父程序,並在子程序中返回 0。在失敗時返回 -1 而沒有建立程序。

用法示例:

#include <stdio.h>
#include <unistd.h>

void child_process();
void parent_process();

int main()
{
    pid_t pid;
    pid=fork();
    if(pid==0)
        child_process();
    else
        parent_process();
    return 0;
}

/*getpid() will return the Pid of the 
  current process executing the function */

void child_process()
{
    printf("Child process with PID : %d  and PPID : %d ", getpid(),getppid());    
}

void parent_process()
{ 
    printf("Parent process with PID : %d", getpid());    
}

來自子和父的 printf 語句的順序取決於純粹依賴於系統的排程機制。