关于Linux创建新进程

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



其中我所不懂的如下:
首先,第一张图片里的源代码中,int main的后面不应该加上一对圆括号吗,为什么没有加上?
其次,在程序的最后部分执行那个for循环体打印message信息,理论上不管n是多少,不都是应该连续打印n次“This is the parent”或者“This is the child”吗?为什么实际的运行效果却是穿插式打印?先打印一次parent,再打印一次child,如此类推。。。
...全文
68 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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,所以没有连续打印。
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4151

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2015-10-18 07:06
社区公告
暂无公告