本例用到3個檔案:建立管道、往管道裡寫資料、從管道裡讀資料。
fifo_write.c
#include #include #include #include #include #include #include #include #define bufes pipe_buf
int main(void)
for(i=0;i<100;i++)
if(write(fd,buf,100))
close(fd);
exit(0);
}
fifo_read.c
#include #include #include #include #include #include #include #include #define bufes pipe_buf
int main(void)
while((len=read(fd,buf, bufes))>0) /* 開始進行通訊 */
{for(j=0;j
fifo.sh
#!/bin/bash
file="/home/nb/test/fifo1"
if [ -p "$file" ];then
rm -rf fifo1
rm -rf 0666
fimkfifo fifo1 0666
echo "mkfifo fifo1 successful"
./fifo_write
echo "start fifo_write...."
執行順序:先建立管道,執行:./fifo.sh
然後寫資料:./fifo_write可以在後台也可以重新開終端讀資料。
最後:./fifo_read讀資料。
注意:fifo預設旗標為必須寫完之後才能讀。而且讀一次後fifo管道中清空,沒有資料。所以每次讀完後再讀管道中是沒有資料的(阻塞等待新的資料寫入)。
linux下管道命令
想必很多剛接觸linux尤其是在redhat環境下,大家都見過 rpm qa grep 或者rpm qa sort之類的命令,但是並不知道 是乙個什麼符號。管道符號,是unix功能強大的乙個地方,符號是一條豎線 用法 command 1 command 2 他的功能是把第乙個命令command 1執...
Linux下管道程式設計
功能 父程序建立乙個子程序父程序負責讀使用者終端輸入,並寫入管道 子程序從管道接收字元流寫入另乙個檔案 include include include include include include include define max 100 intmain pid fork 建立子程序 if p...
Linux 命名管道FIFO
管道的乙個不足之處是沒有名字,因此,只能用於具有親緣關係的程序間通訊,在命名管 道 named pipe或fifo 提出後,該限制得到了克服。fifo不同於管道之處在於它提供一 個路徑名與之關聯,以fifo的檔案形式儲存於檔案系統中。命名管道是乙個裝置檔案,因 此,即使程序與建立fifo的程序不存在...