linux下C程序之間管道通訊的問題,懂的進來看下這段程式怎麼執行起來不對

2022-06-06 20:10:02 字數 787 閱讀 3638

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...