小白的linux系统编程

henu_fyh 2017-07-24 10:31:31
下边是老师留的作业,然后我写了一个答案,但是最后总是输出不出来(从34行到52行,里面的子进程的exec函数也没有执行)

作业:父进程fork 3 个子进程,三个子进程一个调用ps命令, 一个调用自定义程序1(正常),一个调用自定义程序2(会出段错误)。父进程使用waitpid对其子进程进行回收。


...全文
682 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkjasdf9909 2017-09-24
  • 打赏
  • 举报
回复
父进程fork一次返回的是子进程的pid,在父进行循环三次的时候,父进程的p1、p2、p3分别保存了三个子进程的pid。 而子进程在pid等于0的时候会退出循环,而且在退出之前,p1 = pid,p2 = pid、p3 = pid ,都为0。 所以子进程在退出循环的时候,子进程执行的是后面else部分。而父进程退出的时候p1,P2、p3分别保存的是子进程的pid,所以也执行else部分 执行结果


pid1 : 4918
pid1 : 0
pid2 : 4919
current process id : 4918
pid2 : 0
pid3 : 4920
current process id : 4919
pid3 : 0
current process id : 4920
current process id : 4917

Insane_linux 2017-08-22
  • 打赏
  • 举报
回复
一看fork函数就没有好好学
acoolntly 2017-08-14
  • 打赏
  • 举报
回复
为什么用++i不是很明白
老衲笑纳了 2017-08-04
  • 打赏
  • 举报
回复
你这个fork3次。。。。
LubinLew 2017-07-27
  • 打赏
  • 举报
回复
fork的用法完全是错误的, 你没有理解 fork 一次调用两次的返回是什么意思

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧