免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3699 | 回复: 10
打印 上一主题 下一主题

[已解决]popen 没有获得输入流 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-19 11:08 |只看该作者 |倒序浏览
本帖最后由 inwing 于 2010-10-19 11:31 编辑

答案:6楼
popen一个shell 然后就直接输出了 并没有捕获到流
我肯定不是参数设置错误的问题 请教是什么原因?

  1. /* copy */
  2. #include <sys/types.h>
  3. #include <unistd.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <string.h>

  7. int main( void )
  8. {
  9. FILE   *stream;
  10. FILE   *wstream;
  11. char   buf[1024];

  12. memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中
  13. stream = popen( "ls -l", "r" ); //将“ls -l”命令的输出 通过管道读取(“r”参数)到FILE* stream
  14. wstream = fopen( "test_popen.txt", "w+"); //新建一个可写的文件

  15. fread( buf, sizeof(char), sizeof(buf), stream); //将刚刚FILE* stream的数据流读取到buf中
  16. fwrite( buf, 1, sizeof(buf), wstream );//将buf中的数据写到FILE    *wstream对应的流中,也是写到文件中

  17. pclose( stream );  
  18. fclose( wstream );

  19. return 0;
  20. }
复制代码
系统CentOS 5.2
这段执行没问题
但是我要是执行nginx的命令就无法获得返回值

论坛徽章:
0
2 [报告]
发表于 2010-10-19 11:11 |只看该作者
没看懂什么意思  代码 效果贴出来看看

论坛徽章:
0
3 [报告]
发表于 2010-10-19 11:16 |只看该作者
回复 1# inwing


    你是怎么捕获的?只这么说不明白。。

论坛徽章:
0
4 [报告]
发表于 2010-10-19 11:19 |只看该作者
一执行nginx命令 在popen的时候 就输出了 并没有捕获到流里面去 当然生成的临时文件里面也没有。。 不是很清楚为什么

论坛徽章:
0
5 [报告]
发表于 2010-10-19 11:23 |只看该作者
回复 4# inwing


    你这段代码没问题,贴出来也找不到你说的原因,还是自己跟代码吧。多加几个打印输出

论坛徽章:
0
6 [报告]
发表于 2010-10-19 11:26 |只看该作者
nginx命令后面加上2>&1
并用pclose获取返回状态看看

论坛徽章:
0
7 [报告]
发表于 2010-10-19 11:30 |只看该作者
nginx命令后面加上2>&1
并用pclose获取返回状态看看
lkk2003rty 发表于 2010-10-19 11:26


这样改什么意思呢?

论坛徽章:
0
8 [报告]
发表于 2010-10-19 11:32 |只看该作者
回复 7# inwing


    看来nginx用的标准错误输出。。

论坛徽章:
0
9 [报告]
发表于 2010-10-19 11:33 |只看该作者
谢了 诸位 结贴

论坛徽章:
0
10 [报告]
发表于 2010-10-19 11:40 |只看该作者
回复 7# inwing


    可能命令执行出错了,但是出错信息 是打在标准错误输出的,故。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP