0
我是C新手,我試圖弄清楚如何將一個程序的輸出發送到另一個程序進行處理......或PIPE它。C - 管道使用printf和scanf ..暫停
例如, ./foo | ./boo
foo - 每隔100ms從外部源讀取數據並將其寫入標準輸出。
噓 - 從標準輸入讀取數據,做一些簡單的計算,並將其寫入到stdout,
(我沒有獲得富,但它寫在一個新的生產線每100ms的浮點值。)
我有工作,每天幾百項後,但...有2秒鐘暫停...
所以它吐出約200線,2秒的停頓,200線,2秒暫停。
是否有我需要注意的緩衝區?
這裏是噓聲的代碼;
#include <stdio.h>
float input;
float value;
while (1)
{
input = scanf("%f", &value);
{do stuff here}
printf("result %f \n ", input);
fflush(stdout);
}
return 0;
}
編輯 我發現這個問題,FOO曾經爲延時100ms循環。當把它揉成噓聲時,它不知何故被分組在一起。刪除這個循環修復了問題
我注意到'printf'沒有換行符。如果是這樣的話,你應該在'printf'後面調用'fflush(stdout)'。 –
感謝David,我用newline char&fflush更新了代碼,我仍然得到相同的結果。 – Mwilliams03
如果你打印一個'\ n',你不必刷新標準輸出: –