本次课学习了进程的创建
1 进程控制fork()函数创建
示例:
#include
pid_t fork(void);
返回值:
- 成功:返回两个值,子进程创建成功后,原程序会被复制,就有了两个fork函数。父进程的fork函数会返回子进程的pid,子进程的fork函数会返回0.
- 不成功:若子进程创建失败,原程序不会复制,父进程的fork函数返回
案例:
#include
#include
#include
int main(){
pid_t tempPid;
tempPid = fork();
if(tempPid == -1){
perror("fork error");
}else if(tempPid > 0){//parent
printf("parent process, pid = %d, ppid = %d\n", getpid(), getppid());
}else{//child
printf("child process, pid = %d, ppid = %d\n", getpid(), getppid());
}//of if
printf("......finish......");
return 0;
}//of main
2.创建多个进程
根据之前学过的循环来说,直接for循环遍历即可完成多个进程的创建,但实际上如果直接遍历会导致进程数量呈现倍数增长的情况 ,i的数字越大,生成的数量就越多
解决方法:在循环里加入判断语句辨别父子进程
存在的问题是子进程的序号不是递增的,而且终端提示符后面仍然有子进程信息打印,而命令提示符在最后一行的开头闪烁。
解决方法:sleep函数,暂缓进程的进行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)