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
語句的順序取決於純粹依賴於系統的排程機制。