1
我正在開發一個應用程序,在該應用程序中,我想將dd命令的輸出(進度信息)重定向到我的C++程序,但實際上並未獲取輸出,這裏是代碼使用管道讀取dd命令的輸出問題
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,並且它在終端上不斷重新調整?
感謝您的建議,嘗試了這一點,但仍然是相同的結果.. – 2010-12-22 10:59:51