上节课老师讲了进程管理,布置了一个课后小练习。
我们来复习一下上节课的内容,顺便做练习:
1.创建进程
pid_t fork(void);
功能:创建进程;函数执行后,系统会创建一个与原进程几乎相同的进程,之后父子进程都继续执行。
参数说明:无
返回值说明:
- 成功:返回两个值,子进程创建成功后,原程序会被复制,就有了两个fork函数。父进程的fork函数会返回子进程的pid,子进程的fork函数会返回0.
- 不成功:若子进程创建失败,原程序不会复制,父进程的fork函数返回-1。
实例:
2.创建多个进程
int i;
for(i = 0; i < 2; i ++){
tempPid = fork();
}//of for i
每次调用fork函数,系统会复制原程序
i=0,第一次循环,会有两份test_fork文件
i=1,第二次循环,第一份test_fork文件又会有两份test_fork文件,第二份test_fork文件也会有两份
每一次循环,进程的总数是当前进程数量的两倍,2次循环则为2^2 = 4个进程。
但我们只想创建两个进程,该怎么办?
【解决方法】:如果只希望父进程可以创建新进程,则在for循环中添加一个判断:若当前进程不是父进程,则跳出循环。
实例:
我们想让子进程的序号递增,该怎么办?
3.进程的执行顺序:利用sleep函数,暂缓进程执行