关于重定向的问题!

gybcb 2003-07-11 07:47:12
关于输出重定向的问题!
对于一般的linux命令,可以用如下的代码实现:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE* pipein_fp, *pipeout_fp;
char readbuf[81];
readbuf[80] = 0;

//if ((pipein_fp = popen("javac test.java", "r")) == NULL)
if ((pipein_fp = popen("ls", "r")) == NULL)
{
perror("popen");
exit(1);
}

while(fgets(readbuf, 80, pipein_fp))
printf("readbuf = %s", readbuf);

pclose(pipein_fp);
}

但是当把应用程序改成javac以后所有的输出都不能截获!
怀疑可能是javac不是输出到stdout!
不知道有谁有方法能把所有的输出都截获呢?
请指教!
谢谢!

...全文
26 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
blh 2003-07-14
  • 打赏
  • 举报
回复
你执行javac test.java有输出吗?
gybcb 2003-07-14
  • 打赏
  • 举报
回复
没有人知道吗?
gybcb 2003-07-14
  • 打赏
  • 举报
回复
好了!结贴先!
gybcb 2003-07-14
  • 打赏
  • 举报
回复
to linaxing(牛牛) :
谢谢你的回复!:)

这个是把stderr重定向到stdout!
有没有直接是截获stderr消息的方法啊?
linaxing 2003-07-14
  • 打赏
  • 举报
回复
改成这样试一试:
if ((pipein_fp = popen("javac test.java 2>&1", "r")) == NULL)
gybcb 2003-07-14
  • 打赏
  • 举报
回复
有的!test.java的代码是错的!

23,121

社区成员

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

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