linux管道程式設計

2021-05-22 04:53:00 字數 1222 閱讀 7771

一、利用管道獲取子程序的輸出

#include

int main()

while ( (ret = fread(buf, 1, 1023, pp)) > 0)

fprintf(stdout, "/n");

pclose(pp);

return 0;   

}二、利用管道向子程序的輸入資料

沒有想到好的命令,自己寫了如下乙個test程式,該程式從stdin讀取資料寫入到乙個檔案

//test.c

#include

#include

#include

int main()

while (line = fgets(buf, 1024, stdin))

return 0;

}然後使用如下程式測試管道

//po.c

#include

#include

int main()

ptr = "test line 1/n";

fwrite(ptr, 1, strlen(ptr), pp);

ptr = "test line 2/n";

fwrite(ptr, 1, strlen(ptr), pp);

pclose(pp);

return 0;   

}編譯test.c

gcc -o test test.c

得到可執行檔案test

編譯po.c

gcc -o po po.c

得到可執行檔案po

執行./po

得到test.txt檔案

cat test.txt

內容如下:

test line 1

test line 2

雙向管道的使用**,源自manpipe

#include

#include

#include

#include

#include

#include

intmain(int argc, char *argv)

cpid = fork();

if (cpid == -1)

if (cpid == 0) else

}

Linux程式設計 管道

什麼是管道 程序管道 pclose函式 pipe呼叫 父程序和子程序 管道關閉之後的讀操作 對於管道,通常不知道有多少資料可以讀,往往採用輪詢的方式。當沒有資料可以讀時,read呼叫將被堵塞。如果管道的另一端關閉時,read呼叫返回的是0而不是堵塞。fork產生的子程序也會使用者和父程序相同的一對管...

Linux有名管道程式設計

有名管道可以用於任何兩個程式間通訊,因為有名字可引用。注意管道都是單向的,因此雙方通訊需要兩個管道。下面分別是這兩個程式 同樣是lucy先執行,然後是peter。fifolucy.c include include include include include include include in...

Linux管道程式設計例項

管道 可以把管道想象為兩個實體之間的單向聯結器。注意,管道是半雙工的,如果需要全雙工通訊,應該轉而考慮套接字。匿名管道又稱管道,提供了乙個程序與它的兄弟程序通訊的方法,只存在于父程序中 命名管道,可以存在與檔案系統中,任意程序都可找到它,使得不同先祖的程序也可以通訊。include int pipe...