linux系统中,pid_t fork(void)的功能是什么?其返回值的意义是什么呢?
fork用来创建子进程,创建失败时返回负数;创建成功时返回两个值:父进程的fork返回一个正数表示子进程的进程ID,子进程的fork返回0。这里要有一个概念:fork调用成功后就是两个进程在运行,而不是一个了。
这个写个void 意思是不接受参数
#include <unistd.h>
#include <stdio.h>
int main ()
{
pid_t fpid; //fpid表示fork函数返回的值
int count=0;
fpid=fork();
if (fpid < 0)
printf("error in fork!");
else if (fpid == 0) {
printf("i am the child process, my process id is %d\n",getpid());
printf("我是爹的儿子\n");//对某些人来说中文看着更直白。
count++;
}
else {
printf("i am the parent process, my process id is %d\n",getpid());
printf("我是孩子他爹\n");
count++;
}
printf("统计结果是: %d\n",count);
return 0;
}
nyc@nyc-computer:~$ gcc exp_fork.c -o exp_fork
nyc@nyc-computer:~$ ./exp_fork
i am the parent process, my process id is 5569
我是孩子他爹
统计结果是: 1
i am the child process, my process id is 5570
我是爹的儿子
统计结果是: 1
nyc@nyc-computer:~$ ./exp_fork
i am the parent process, my process id is 5572
我是孩子他爹
统计结果是: 1
i am the child process, my process id is 5573
我是爹的儿子
统计结果是: 1
nyc@nyc-computer:~$ ./exp_fork
i am the parent process, my process id is 5574
我是孩子他爹
统计结果是: 1
i am the child process, my process id is 5575
我是爹的儿子
统计结果是: 1
nyc@nyc-computer:~$ ./exp_fork
i am the parent process, my process id is 5576
i am the child process, my process id is 5577
我是孩子他爹
我是爹的儿子
统计结果是: 1
统计结果是: 1
nyc@nyc-computer:~$