我必須讓兩個方案其中一個名爲發生器,它打印一些文字每秒Ç標準輸出到標準輸入實時
int main(int argc, char** argv) {
for(int i = 0; i < 10 ; i++) {
printf("something\n");
sleep(1);
}
return (EXIT_SUCCESS);
}
再有第二個程序中調用它的消費者,現在,這應該從一個非標準輸入讀取添加一些其他文字並重新打印它。 讓它看起來像這樣:
int main(int argc, char** argv) {
char line[BUFSIZ];
while(scanf("%s",line) != -1){
printf("you entered %s \n",line);
}
return (EXIT_SUCCESS);
}
當我編譯並嘗試運行只有一個發電機像./generator它的工作原理如我所料。每秒鐘都會打印到控制檯。 但是當我嘗試運行它們都像./generator | ./消費者 它沒有按照我的預期工作。我等了10秒,之後得到10行你輸入了一些東西 我想打印「你每秒輸入一些東西」。
你能解釋一下爲什麼這樣,或者甚至更好地告訴我如何達到預期的行爲?
或者你也可以使用stdbuf -o0 ./generator關閉緩衝命令行| 。/ consumer –
@RomanHocke等待有一個程序改變另一個進程預執行程序的用戶模式行爲?那麼這很有趣... –