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ループブロックの次の行が実行されることです。
出力がバフに戻されず、端末で継続的に再調整される理由を誰かが知っている場合はどうなりますか?