1樓:匿名使用者
1全部你的要求 「管道尾寫個資料後,管道頭讀,然後在讓管道尾寫,一直迴圈」,其實是乙個程序同步的問題,即一邊寫完了,另外一邊讀,讀完了,才能再寫。所以要用到程序間通訊的方式來讓讀段通知寫端我已經讀完了,你可以寫下乙個了。 有很多種方法來實現這個程序同步,比如用訊號量等。
不過既然你是乙個管道的**,我就用了管道的方式來實現,讓你參考。下面的**建立了兩個管道,pipe_a2b 這個就是你原來的那個管道, pipe_b2a 這個是新加的,用來讓讀端通知寫端可以繼續的。
#include
#include
#include
#include
#include
int main()
if(pipe(pipe_b2a)<0)
pid=fork();
if (pid == 0)
close(pipe_a2b[0]);
close(pipe_b2a[1]);
}if(pid>0)
close(pipe_a2b[1]);
close(pipe_b2a[0]);
}exit(0);}
2樓:匿名使用者
#include
#include
#include
#include
#include
int main()
pid=fork();
if(pid<0)
else if(pid==0)
else}
求個linux下c語言簡單程式,linux下最簡單的c程式怎麼編譯
你這裡用了管道符 這個程式沒辦法寫,因為linux會理解為執行了三個程式 run 11 2233 並且上面三個程式 22和33都被解釋為程式了 輸入輸出互為管道你理解肯定有問題,請再考慮考慮,linux命令列裡面大於號小於號豎線都不是隨便能用的。linux下最簡單的c程式怎麼編譯 gcc g hel...
Linux系統下的C 程式設計與Windos下的C 程式設計有什麼區別?請講的具體些,謝謝
我只舉一些例子 每個不同點可能有別的代替 linux win 編譯器不同 g vc 用的庫不一樣 函式有些不同 函式有些不同 程序間通訊方式不一樣 可以有共享記憶體 沒有共享記憶體 在不同的作業系統下要用不同的編譯器,如果都是用 c 語言編寫 則編譯出來的目標 不同,對於簡單的程式它們沒有什麼太大的...
幫忙看一下這個c 程序,幫忙看一下這個c 程式
include class complex void display private double real,imag complex complex complex complex double r void complex int main ok大功告成 好累 幫你指正一下吧,你在把2.5和c1...