fork创建出一个新进程,新的进程叫做子进程,原来的进程叫父进程,父进程返回子进程的pid(唯一标识一个进程),子进程最终返回0
pid_t == int 一共能够产生多少个进程,int能表示的范围 最大有32768
fork()一旦运行以后,首先为它申请一个pid,如果pid没法申请出来,就说明有可能达到了操作系统能够运行的最大数目了,所以pid申请失败了。也有可能一个用户进行进程过多,已经不能再去获取进程了
pid = 3456 (父进程) 和 pid = 3457 (子进程) 的唯一区别
pid = 3456 (父进程) 的返回值是子进程的id号
pid = 3457 (子进程) 的返回值是0,是强制为0的
问:以下代码执行完成后会打印出几个A?
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
int main()
{
int i=0;
for( ;i<2;i++)
{
fork();
printf("A\n");
}
exit(0);
}
解析:
问:根据上面的代码进行修改,以下代码执行完成后会打印出几个A?
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
int main()
{
int i=0;
for( ;i<2;i++)
{
fork();
printf("A");//此处去掉\n
}
exit(0);
}
解析:
问:以下代码执行完成后会打印出几个A?
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
int main()
{
fork() || fork();
printf("A");
exit(0);
}