一、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]# gcc fork.c 
[root@drxun ch03]# ./a.out 
Now only one process
Calling fork...
I'm the parent, child has pid 87349
I'm the child
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐