在linux系统下 ,怎么创建进程啊

在linux系统下 ,怎么创建进程啊,第1张

linux 系统创建进程都是用 fork() 系统调用创建子进程由 fork() 系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果 fork()进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程号

pid = fork()//创建进程命令点

if(pid <0){...} //pid<0,表示fork出错,程序一般会退出,不会出现pid=0和pid>0的情况

else if(0 == pid){...} //从这个点开始,程序出现分支 pid=0表示fork出来的子进程分支

else{....} //否则是原进程,即父进程

printf("here!")//如果在上面两个进程都没有exit() *** 作时,执行完{}中的命令,都会走到这里

关于fork出来的父子进程关系,请仔细阅读linux高级编程中进程一章节,内容很多,细细的阅读并练习体会吧

/*请解释一下*/

while(((child=wait(&status))==-1)&(errno==EINTR))

这种的目的是父亲进程等待子进程结束,并回收子进程的资源,将子进程的退出状态存储在status中,同时,返回该子进程的pid。

如果wait函数返回-1表示wait函数被其它情况打断返回,并没有等待到子进程结束,而同时判断errno的值是不是EINTR(意思是让你try again),那么,让进程继续等待。因为这个错误并不是真正wait错误,而是被timeout时间等造成的,因此重新等待。而如果是其它情况,显然是wait函数调用错误,即下面的if(child==-1),需要打印错误信息。‘

//但你这句应该写错了。应该是逻辑与而不是位与 *** 作。即

while(((child=wait(&status))==-1)&&(errno==EINTR))

/*请解释一下*/

if(child==-1)

你对信号处理部分还需要努力。

另外介绍一本书《Linux高级程序设计 第3版》 上面讲得很清楚。

有问题我们继续交流,一起学习。

更多技术文章可以关注我的微博,名字:成都睿尔科技 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8491705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存