使用fork()函数创建进程
前言:
如果程序调用fork()成功,fork()函数会返回两次的值,两次的值都不相同,返回0是给子进程的,父进程返回非负整数。调用不成功返回-1(具体怎样会调用不成功,我现在也不知道,以后学到了再来补充).
下面是代码实现:
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
int main()
{
pid_t pid;//定义pid 获取进程号
pid_t repid;//定于repid 接受fork()函数的返回值
printf("父进程才会打印 \n");
/*fork()之前元素父进程仅有*/
repid=fork();//调用fork
pid=getpid();//调用调用getpid()获取进程号
if(repid>0)
{
printf("这是夫进程.\n");
printf("父进程的pid=%d ,repid=%d\n",getpid(),repid);
}
else if(repid==0)
{
printf("这是子进程.\n");
printf("子进程的pid=%d ,repid=%d\n",getpid(),repid);
}else if(repid==-1)
{
printf("fork()函数调用失败!\n");
}
printf("-------------------\n");
return 0;
}
运行结果:
@Embed_Learn:~$ ./a.out
父进程才会打印
这是夫进程.
父进程的pid=4218 ,repid=4219
-------------
这是子进程.
子进程的pid=4219 ,repid=0
-------------
注意:
fork()之前的元素,只有父进程才拥有,fork()之后的元素父进程和子进程各持一份。