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 语句的顺序取决于纯粹依赖于系统的调度机制。