设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
父子进程的输出冲突问题
返回列表
查看:
689
|
回复:
7
父子进程的输出冲突问题
[复制链接]
正中下怀
正中下怀
当前离线
积分
494
IP卡
狗仔卡
发表于 2003-10-4 18:17:31
|
显示全部楼层
|
阅读模式
我用fork建立一个子进程
启动它以后,父进程输出缓冲区的内容,它也打印出来了
父进程也跟着打印原来的内容
结果,一句话打印了两次,怎么解决这样的问题
请兄弟们指点一下!谢谢!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
georgek
georgek
当前离线
积分
2430
IP卡
狗仔卡
发表于 2003-10-4 20:07:57
|
显示全部楼层
很大的程序嗎?
回复
支持
反对
使用道具
举报
显身卡
无双
无双
当前离线
积分
1799
IP卡
狗仔卡
发表于 2003-10-4 20:11:42
|
显示全部楼层
应该是没有理解fork机制
建议对这理解得深一点
提示"
还有就是打印时不只是父进程使用当前屏幕输出
子进程也使用
回复
支持
反对
使用道具
举报
显身卡
正中下怀
正中下怀
当前离线
积分
494
IP卡
狗仔卡
楼主
|
发表于 2003-10-4 20:31:12
|
显示全部楼层
我想,不是那个原因
原来的主程序是父进程,其中建立一个子进程,去执行另一个程序
用的是
execle
调用的
那个子进程没有任何输出,我想,是输出缓冲区的问题
请兄弟们指点!
:help
回复
支持
反对
使用道具
举报
显身卡
无双
无双
当前离线
积分
1799
IP卡
狗仔卡
发表于 2003-10-4 21:16:26
|
显示全部楼层
代码
回复
支持
反对
使用道具
举报
显身卡
正中下怀
正中下怀
当前离线
积分
494
IP卡
狗仔卡
楼主
|
发表于 2003-10-5 14:56:59
|
显示全部楼层
我从图书馆查到了
父进程创建子进程以后,输出缓冲区里的内容也一起复制给了子进程
于是出现了,一句话打印了两次的结果.
解决的方法,就是在创建子进程之前,调用
fflush(stdout)
来刷新标准输出的缓冲区,我试了,好使了
还是感谢楼上的兄弟们的指点,你们很负责!:thank
回复
支持
反对
使用道具
举报
显身卡
kicool
kicool
当前离线
积分
13
IP卡
狗仔卡
发表于 2003-10-20 17:59:45
|
显示全部楼层
楼上的能不能说详细点?
缓冲区是位于进程的数据区吗?
回复
支持
反对
使用道具
举报
显身卡
正中下怀
正中下怀
当前离线
积分
494
IP卡
狗仔卡
楼主
|
发表于 2003-10-20 18:53:33
|
显示全部楼层
就像
printf("this is a string!\n");
这样的输出语句,父进程输出了
如果不清空stdout,子进程就会重新输出一遍
如果父子进程都使用 stdout 的话,就会看到一条输出语句被显示了两次
特别是那些临近进入子进程的输出代码,常常会出现这样的现象
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Linux小型、嵌入式系统
硬件设备 Linux 驱动
网络技术\网络安全讨论
shell进阶应用、shell编程
Mandriva Linux
LFS(LinuxfromScratch)
开源软件专题讨论
Linux 基础讨论区(新手速成)
SuSE Linux
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表