一、API
头文件:unistd.h
pid_t fork();
作用: 如果fork()调用成功,就会使内核建立一个新的进程,所建的新进程是调用fork()的进程的副本。 系统调用fork()没有参数,它返回一个pid_t类型的值pid。pid被用来区分父进程和子进程。在父进程中,pid被置为一个非0的正整数;在子进程中,pid被置为0。根据fork()在父进程和子进程中的返回值不同,程序员可以据此为两个进程指定不同的工作。
二、例子
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
printf("Now only one process\n");
printf("Calling fork...\n");
pid = fork();
if (!pid)
{
printf("I'm the child\n");
}
else if (pid > 0)
{
printf("I'm the parent, child has pid %d\n", pid);
}
else
{
printf("fork fail!\n");
}
return 0;
}
输出结果:
[root@drxun ch03]
[root@drxun ch03]
Now only one process
Calling fork...
I'm the parent, child has pid 87349
I'm the child
|