利用管道進行通訊

2021-06-26 22:38:05 字數 1322 閱讀 8447

管道簡介:

管道是單向的、先進先出的、無結構的、固定大小的位元組流,它把乙個程序的標準輸出和另乙個程序的標準輸入連線在一起。寫程序在管道的尾端寫入資料,讀程序在管道的首端讀出資料。資料讀出後將從管道中移走,其它讀程序都不能再讀到這些資料。管道提供了簡單的流控制機制。程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞。同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞。

關於管道的**例項

此程式是關於管道的建立和讀寫和關閉

#include#include#includeint main(void)

write(fd[1],"create the pipe successfully!\n ",31);

read(fd[0],str,sizeof(str));

printf("%s",str);

printf("pipe file descriptors are %d ,%d\n",fd[0],fd[1]);

close(fd[0]);

close(fd[1]);

return 0;

}

此程式說明管道內的資料在讀出之後就沒有了

#include#includeint main()

else

read(filedes[0],buffer,80);

printf("%s\n",buffer);

close(filedes[0]);

close(filedes[1]);

return 0;

}

父子程序之間的通過管道進行通訊

#include#include#include#includeint main()

if( ( pid = fork() ) < 0 )

else if( pid > 0 )

else

return 0;

}

兄弟程序之間進行通訊

要點:需要在第二次建立乙個子程序的時候關閉父程序管道的兩端,

而不是第一次,這樣做的目的是繼承乙個存活的管道。

#include#include#include#include#includeint main( void )

if( ( pid = fork() ) < 0)

perror("fork2");

else if( ( pid > 0 ) < 0)

else

return 0;

}

利用管道實現程序間通訊

管道 pipe 是程序用來通訊的共享記憶體區域。乙個程序往管道中寫入資訊,而其它的程序可以從管道中讀出資訊。如其名,管道是程序間資料交流的通道。郵路 mailslots 的功能與管道類似,也是程序間通訊 interprocess communications,ipc 的媒介,只不過其具體實現方式與管...

程序間利用管道進行通訊 列印斐波那契數列

fibonacci序列是0,1,1,2,3,5,8,通常它可以表示為 f ib 0 0 f ib 1 1 f ibn f ibn 1 f ibn 2 編寫乙個 c程式,使用系統呼叫 fork 建立兩個子程序p1和 p2。他們的任務如下 1 子程序p1 列印自己的 pid,然後使用 exec 族 系統...

利用管道實現多程序間通訊

管道是linux系統最常見的程序間通訊方式之一,它在兩個程序之間實現乙個資料流通的通道,資料以一種資料流的方式在程序間流動。它把乙個程式的輸出直接連到另乙個程式的輸入。管道可以分為以下兩種,利用這兩種管道可以實現程序間的通訊,但是對於程序間的關係會有所限制 解決和 方法如下,資料以字元為例,通訊的內...