关于Linux创建新进程

纹枰老妖 2015-10-18 07:06:11
以下两张图片截取自《操作系统原理及实验》手机电子书版:



其中我所不懂的如下:
首先,第一张图片里的源代码中,int main的后面不应该加上一对圆括号吗,为什么没有加上?
其次,在程序的最后部分执行那个for循环体打印message信息,理论上不管n是多少,不都是应该连续打印n次“This is the parent”或者“This is the child”吗?为什么实际的运行效果却是穿插式打印?先打印一次parent,再打印一次child,如此类推。。。
...全文
105 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2015-10-19
  • 打赏
  • 举报
回复
电子书格式转来转去,有些关键字符丢失是很正常的事情。 父子进程一起被系统调度,可以认为调度顺序是随机的,但由于程序中有sleep(1),所以效果上看起来是有序的。
Carl_CCC 2015-10-19
  • 打赏
  • 举报
回复
这个fork是linux的API,你在Linux上跑
纹枰老妖 2015-10-18
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
其中我所不懂的如下: 首先,第一张图片里的源代码中,int main的后面不应该加上一对圆括号吗,为什么没有加上? 我只能说,不要在意细节,你是对的,加上()就好了。 其次,在程序的最后部分执行那个for循环体打印message信息,理论上不管n是多少,不都是应该连续打印n次“This is the parent”或者“This is the child”吗?为什么实际的运行效果却是穿插式打印?先打印一次parent,再打印一次child,如此类推。。。 因为有sleep,每打印一次程序会让出cpu,所以没有连续打印。
谢谢科普,还想请教一下,上面的代码在win7系统上可以运行吗?【把细节修正了,比如main和fork都加上圆括号,我试了一下,似乎不可用】
Carl_CCC 2015-10-18
  • 打赏
  • 举报
回复
其中我所不懂的如下: 首先,第一张图片里的源代码中,int main的后面不应该加上一对圆括号吗,为什么没有加上? 我只能说,不要在意细节,你是对的,加上()就好了。 其次,在程序的最后部分执行那个for循环体打印message信息,理论上不管n是多少,不都是应该连续打印n次“This is the parent”或者“This is the child”吗?为什么实际的运行效果却是穿插式打印?先打印一次parent,再打印一次child,如此类推。。。 因为有sleep,每打印一次程序会让出cpu,所以没有连续打印。

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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