创建子进程 fork();
代码测试:
代码解释:
fork(),sleep()函数需要头文件<unistd.h>
perror()需要头文件<stdio.h>,exit()需要头文件<stdlib.h>
pid_t 代表进程整型,fork()有两个返回值1.父进程id(pid>0)2.子进程id (pid==0) 当pid<0创建失败
getpid()获取进程号,getppid()获得父进程的进程号
执行了fork()之后,子进程会完全复制父进程的资源(代码区,数据区)两个进程并发执行,没有先后(根据具体调度算法)
执行结构如下(为了表现父子结构,让父进程先暂时sleep)
如果去掉sleep,父进程先执行,结束后消亡,子进程会变成孤儿进程 ,系统会为孤儿进程安排一个永远存在的父进程pid=1(所有用户进程的祖先)
代码测试:
要求创建5个进程,每个子进程按照顺序输出:
每次循环创建的进程 是2的i次方,5次循环就会有32个进程,为了控制个数,可以在创建子进程之后结束程序效果等于杀死进程
为了控制调度顺序可以安排睡眠时间
执行结果