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