2 machelcheng machelcheng 于 2014.12.21 00:38 提问

popen调用后,从执行的shell命令结果中获取数据失败

#include
#include
#include
#include

#define CMD "cat /proc/diskstats| grep '\b[sh]d[a-z]\b'| awk '{print $4" "$6" "$8" "$10}'"
int main()
{
FILE *file=popen(CMD, "r");
char buff[255];
if(fgets(buff, 255, file)!=NULL)
printf("buff is %s\n", buff);
else
printf("fgets failed.\n");
pclose(file);
return 0;
}
单独执行这个shell命令是没问题的,但是popen调用之后就获取不到内容了,看了popen函数以“r”执行的结果是重定向到标准输出了,那么fgets时就应该是从标准输出里获取数据才对,获取不到是什么原因呢?

1个回答

wangyaninglm
wangyaninglm   Ds   Rxr 2015.01.01 12:32

你这个include的啥头文件啊?
http://blog.csdn.net/wangyaninglm/article/details/42303861
你看看这个行不?

Csdn user default icon
上传中...
上传图片
插入图片