在Linux中,fork函數用于創建一個新的進程,該進程是調用進程的副本。新進程稱為子進程,原來的進程稱為父進程。fork函數通過復制父進程的內存空間、文件描述符等信息來創建子進程,子進程會繼承父進程的大部分資源和狀態。
fork函數在創建子進程時返回兩次:在父進程中返回子進程的進程ID(PID),在子進程中返回0。這樣可以根據返回值的不同來區分父進程和子進程,從而進行不同的操作。
fork函數的原型如下所示:
#include <unistd.h>
pid_t fork(void);
一個簡單的示例代碼如下所示:
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed\n");
return 1;
} else if (pid == 0) {
printf("This is the child process\n");
} else {
printf("This is the parent process, child PID is %d\n", pid);
}
return 0;
}
在上面的示例中,通過fork函數創建了一個子進程,子進程輸出"This is the child process",而父進程輸出"This is the parent process, child PID is %d",其中%d是子進程的進程ID。