LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 882|回复: 3

怎么样分开获得管道的输出

[复制链接]
发表于 2003-8-4 18:02:52 | 显示全部楼层 |阅读模式
比如使用
popen("ps -ef | wc -c","r");
获得一个fd,这个fd中的数据为命令“ps -ef”执行后得到信息的字节数

能不能一次调用popen获得“ps -ef”的输出,跟“wc -c”统计的字节数

或者有不有其他的办法

"ps -ef"得到的信息存到一个字符型数组中,"wc -c"得到的数存到一个整型中
发表于 2003-8-4 18:17:25 | 显示全部楼层
先声明一个缓冲区buffer,然后再打开两个fd。
read_fp=popen("ps -ef","r");
write_fp=popen("wc -c","w");
然后再把数据从read_fp中读入,写入到write_fp中就行了。
 楼主| 发表于 2003-8-5 09:27:26 | 显示全部楼层
这样我不能得到读出数据的大小,怎么分配缓冲区大小呀?
我采用的是malloc分配的,这样确保缓冲区足够大呢?
发表于 2003-8-5 10:16:35 | 显示全部楼层
声明一个char buf[BUFSIZ];
BUFSIZ有8192,一般来说,够用了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表