在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。