linux中的fork程序问题

jsjjf2000 2006-08-29 06:28:44
我正在学习linux中的多进程编程,但是根据网上的一个例子。程序代码如下

void main(){
int i;
if ( fork() == 0 ) {
/* 子进程程序 */
for ( i = 1; i < 1000; i ++ )
printf("This is child process\n");
}
else {
/* 父进程程序*/
for ( i = 1; i < 1000; i ++ )
printf("This is process process\n");
}
}

  他说程序运行后,你就能看到屏幕上交替出现子进程与父进程各打印出的一千条信息了。
-----------------------------------------
但是我运行后发现情况并不是如此啊,是先打印1000条子进程信息然后再打印一千条父进程的信息。
这个是为什么啊?
我的是Red hat Linux 2.4内核。
...全文
235 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqzq 2006-08-30
  • 打赏
  • 举报
回复
只能怪你的机器太好了
alaiyeshi 2006-08-30
  • 打赏
  • 举报
回复
还是循环太小

你把循环放大了
再打印的东西弄长点

你就会发现是和书上说的一样

书上的大致是一个理想状态下的结果
apricot0819 2006-08-30
  • 打赏
  • 举报
回复
楼上的朋友帮你解决了问题,要知道其原因
看一下操作系统里的进程调度吧!!!!

你就会明白的。。
jsjjf2000 2006-08-30
  • 打赏
  • 举报
回复
我把程序改了下
void main(){
int i;
printf("This is header!\n");
if ( fork() == 0 ) {
/* 子进程程序 */
for ( i = 1; i < 3; i ++ )
printf("This is child process\n");
}
else {
/* 父进程程序*/
for ( i = 1; i < 4; i ++ )
printf("This is process process\n");
}
}

-------------
结果如下:
This is header!
This is child process!
This is header!
This is father process!
This is father process!
This is child process!
This is father process!
This is child process!
--------------------------
不知道为什么?执行过程到底是怎样的啊?
第一行的This is header!是在父进程中执行的还是在子进程?
-----------------
还请各位高手不吝赐教!

jsjjf2000 2006-08-30
  • 打赏
  • 举报
回复
感谢各位拉
fytzzh 2006-08-29
  • 打赏
  • 举报
回复
for循环计算密集型
在循环里sleep一下.
BaiYangSpirit 2006-08-29
  • 打赏
  • 举报
回复
sleep一下,你就看清楚了
==================
void main(){
int i;
if ( fork() == 0 )
{
/* 子进程程序 */
for ( i = 1; i < 1000; i ++ ) {
printf("This is child process\n");
sleep(1); }
}
else
{
/* 父进程程序*/
for ( i = 1; i < 1000; i ++ ) {
printf("This is process process\n");
sleep(1);}
}
}

23,125

社区成员

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

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