1.用fork函数创建一个进程 pid_t fork(void);
fork函数调用成功,返回两次
返回值为0,代表当前进程是子进程
返回值非负数(子进程的进程ID),代表当前进程为父进程
调用失败,返回-1
2.fork创建一个子进程的一般目的
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
printf("before fork:%d\n",getpid());
pid=fork();
if(pid > 0)
{
printf("father:pid=%d,getpid()=%d\n",pid,getpid());
}
else if(pid == 0)
{
printf("child:pid=%d,getpid()=%d\n",pid,getpid());
}
return 0;
}
hcc@ubuntu:~/LinuxSystemProgramming/PROCESS$ gcc demo.c
hcc@ubuntu:~/LinuxSystemProgramming/PROCESS$ ./a.out
before fork:90850
father:pid=90851,getpid()=90850
child:pid=0,getpid()=90851
3.vfork函数 也可以创建进程,与fork有什么区别
关键区别一: vfork 直接使用父进程存储空间,不拷贝。
关键区别二: vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。