【发布时间】:2010-12-22 10:46:30
【问题描述】:
我正在开发一个应用程序,我想将 dd 命令的输出(进度信息)重定向到我的 C++ 程序,但实际上并没有得到输出,这是代码
FILE * progressInfo = popen("gzip -dc backup/backup.img.gz | pv -ptrbe -i 2 -s 2339876653 | dd of=/dev/sdb","r");
if(!progressInfo)
{
return -1;
}
char buf[1024];
while(fgets(buff, sizeof(buff),progressInfo)!=NULL)
{
std::cout << buff << endl;
}
但问题是buff没有收到进度信息,终端不断打印输出,上面的程序在while(fgets(buff, sizeof(buff),progressInfo)!=NULL)处停止,一旦dd操作完成,非常执行循环块的下一行。
如果有人知道为什么输出没有返回到 buff,并且在终端上不断地重新调整?
【问题讨论】: