Linux/C /管道:Linux管道:通過popen捕獲ping的實時輸出
如何使用popen(或類似系統調用)捕獲ping命令的輸出。 目前popen將等到ping完成。然後輸出將一起傾倒。
僞代碼:
fp= popen("ping x.x.x.x", "r");
while(!feof(pFp))
{
if(fgets(fp ...) // <==currently the code blocks here until ping finishes in popen
{
printf(...real time ping output here);
}
}
C或C++?您的代碼看起來像C. – ThiefMaster
您可能正在遭受緩衝。使用管道(2)進行更多控制。 – cdarke
@cdarke:不會幫助。問題是ping是緩衝它的輸出。我肯定會認爲這是一個在ping中的錯誤。如果它知道它不會有多達一秒的輸出(當它睡覺時),那麼它應該在睡眠之前刷新其輸出... –