fork函数创建子程序原理:
关于fork函数函数几点说明:
1.fork函数返回的两个值不是在一个进程中返回的,而是父子进程各返回一个值,其中父进程返回子进程的PID,子进程返回0;
2.父子进程的执行顺序:谁先获得CPU谁先执行;
3.父子进程执行的代码逻辑:父进程执行PID>0的逻辑,子进程执行PID等于0的逻辑;
4.调用fork之后父子进程会一起并行执行,由原来一个进程变成两个进程。
创建子进程代码如下:
//fork函数测试
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()
{
cout << "before fork, pid:" << getpid() << endl;
//创建子进程
//pid_t fork(void);
pid_t pid = fork();
if(pid<0) //fork失败的情况
{
perror("fork error");
return -1;
}
else if(pid>0)//父进程
{
cout << "father pid==" << getpid() << " fpid==" << getppid() << endl;
sleep(1);
}
else if(pid==0) //子进程
{
cout << "child: " << getpid()<< " fpid==" << getppid() << endl;
}
cout << "after fork, pid:" << getpid() << endl;
return 0;
}
~
~
结果如下:
完结!!!!