管道簡介:
管道是單向的、先進先出的、無結構的、固定大小的位元組流,它把乙個程序的標準輸出和另乙個程序的標準輸入連線在一起。寫程序在管道的尾端寫入資料,讀程序在管道的首端讀出資料。資料讀出後將從管道中移走,其它讀程序都不能再讀到這些資料。管道提供了簡單的流控制機制。程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞。同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞。
關於管道的**例項
此程式是關於管道的建立和讀寫和關閉
#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系統最常見的程序間通訊方式之一,它在兩個程序之間實現乙個資料流通的通道,資料以一種資料流的方式在程序間流動。它把乙個程式的輸出直接連到另乙個程式的輸入。管道可以分為以下兩種,利用這兩種管道可以實現程序間的通訊,但是對於程序間的關係會有所限制 解決和 方法如下,資料以字元為例,通訊的內...