社区
C语言
帖子详情
来看看这个fork的问题
dk_zhe
2012-07-05 05:33:10
#include<stdio.h>
void main()
{
printf("my pid is %d.\n",getpid());
fork();
sleep(1);
fork();
sleep(1);
fork();
sleep(1);
printf("my pid is %d.\n",getpid());
}
猜猜运行这个代码结果如何,为什么。楼主有点蒙了。
...全文
154
9
打赏
收藏
来看看这个fork的问题
#include void main() { printf("my pid is %d.\n",getpid()); fork(); sleep(1); fork(); sleep(1); fork(); sleep(1); printf("my pid is %d.\n",getpid()); } 猜猜运行这个代码结果如何,为什么。楼主有点蒙了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dk_zhe
2012-07-05
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
for()是新建一个子进程,子进程内容复制于父进程继续执行fork下面的代码,除非exit
void main()
{
printf("my pid is %d.\n",getpid());//输出进程id假如父进程id是1000
fork();//新建子进程id是1001
sleep(1);
fork();//父进程1000和子进程1001同时再建子进程,如……
[/Quote]解释得很清楚
wsd3wsdsd
2012-07-05
打赏
举报
回复
http://topic.csdn.net/u/20120705/18/64c1c7bc-68d6-4015-941d-ecc7e584cb8b.html?38569
帮看下这贴
zzustd
2012-07-05
打赏
举报
回复
回帖还不能显示空格,说明下,上面的1005是由进程1001产生的
zzustd
2012-07-05
打赏
举报
回复
for()是新建一个子进程,子进程内容复制于父进程继续执行fork下面的代码,除非exit
void main()
{
printf("my pid is %d.\n",getpid());//输出进程id假如父进程id是1000
fork();//新建子进程id是1001
sleep(1);
fork();//父进程1000和子进程1001同时再建子进程,如生成子进程id分别是1002和1003,已经有四个进程了
sleep(1);
fork();//上面四个进程sleep后同时再建四个进程,现在有八个进程
sleep(1);
printf("my pid is %d.\n",getpid());//看到输出子进程id八次
}
1000----1001----1003----1006
| |
| |-------------1005
|
|---------------1002----1007
|
|-----------------------1004
显示九次输出,第一个进程id显示2次,其他子进程id显示1次,后面无序,进程的执行顺序由系统时间片随机决定,不知楼主能看明白不?
dk_zhe
2012-07-05
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
fork 3次,一个有2^3=8个进程,加上一开始打印的一个,一共9个。
[/Quote]为什么啊,我算感觉是12个啊,但确实是9个
qiuhui00
2012-07-05
打赏
举报
回复
fork 3次,一个有2^3=8个进程,加上一开始打印的一个,一共9个。
dk_zhe
2012-07-05
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
不确定是什么,看哪个进程先执行就打印哪个进程的pid
[/Quote]总共输出了9行,但不知道为什么。
qixing1115
2012-07-05
打赏
举报
回复
运行结果就是输出一堆:my pid isXXX
估计得十多次吧,可能更多
qiuhui00
2012-07-05
打赏
举报
回复
不确定是什么,看哪个进程先执行就打印哪个进程的pid
Fork
Join看这篇就够了!
大家好,我是小黑,一个在互联网苟且偷生的...分治法是计算机领域常用的算法中的其中一个,主要思想就是将将一个规模为N的
问题
,分解成K个规模较小的子
问题
,这些子
问题
相互独立且与原
问题
性质相同;求解出子
问题
的解
Linux中
fork
()函数详解
fork
()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用
fork
()函数后,系统先给新...
三个
fork
函数一共能创建多少个进程?
此题为刷题过程中遇到了题目,比较绕,就下下来记录一下。...首先程序执行,创建一个父进程,作为第一个进程该进程的代码如下: 1进程 int main(void) {
fork
();//位置1
fork
();//位置2
fork
();//...
fork
()函数详解
为什么两个进程的fpid不同呢,这与
fork
函数的特性有关。
fork
调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 1)在父进程中,
fork
返回新创建子进程的进程...
fork
函数详解
首先了解什么是
fork
? 一个进程,包括代码、数据和分配给进程的资源。
fork
()函数通过系统调用创建一个与...上面的话通俗理解就是:
fork
是复制进程的函数,程序一开始就会产生一个进程,当这个进程(代码)执行到
fork
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章