设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
如何通过文件描述符(不是FILE*指针)设置缓冲区? ...
返回列表
查看:
839
|
回复:
5
如何通过文件描述符(不是FILE*指针)设置缓冲区?
[复制链接]
chice
chice
当前离线
积分
64
IP卡
狗仔卡
发表于 2004-7-20 10:00:05
|
显示全部楼层
|
阅读模式
rt.
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
chice
chice
当前离线
积分
64
IP卡
狗仔卡
楼主
|
发表于 2004-7-20 10:19:11
|
显示全部楼层
补充一下:其实就是为了设置pipe的缓冲区。
我再程序中用:
fork()
if(ischildren)
{
close(1);
dup(stdout_pipe[1]);
}
来重定向stdout,发现stdout被缓冲了。子程序中不用fflush就不能立刻返回输出的内容。
因为子程序不一定是我写的,所以不能通过子程序来解决。
是不是只能通过管道来解决来?
谢谢。
(最近学管道,学晕了,好复杂呀!)
回复
支持
反对
使用道具
举报
显身卡
doubleelec
doubleelec
当前离线
积分
773
IP卡
狗仔卡
发表于 2004-7-20 10:34:53
|
显示全部楼层
太遗憾了,如果你的代码之后要调用exec,而要exec的程序又没有源码,
就没有办法通过设置缓冲区来解决这个问题了(因为缓冲区并不在你的程序中)
解决的办法只有创建一个伪终端,让被exec的程序工作在伪终端上,从而按照终端的方式来缓冲,参见<<UNIX环境高级编程>>
回复
支持
反对
使用道具
举报
显身卡
doubleelec
doubleelec
当前离线
积分
773
IP卡
狗仔卡
发表于 2004-7-20 10:35:02
|
显示全部楼层
太遗憾了,如果你的代码之后要调用exec,而要exec的程序又没有源码,
就没有办法通过设置缓冲区来解决这个问题了(因为缓冲区并不在你的程序中)
解决的办法只有创建一个伪终端,让被exec的程序工作在伪终端上,从而按照终端的方式来缓冲,参见<<UNIX环境高级编程>>
回复
支持
反对
使用道具
举报
显身卡
doubleelec
doubleelec
当前离线
积分
773
IP卡
狗仔卡
发表于 2004-7-20 10:36:51
|
显示全部楼层
不好意思,发多了,谁能告诉我,我自己发的贴子能不能删除?
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-7-20 11:05:13
|
显示全部楼层
只有版主有权删除贴子。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表