命名管道(有名管道)的使用 例程式

2021-09-26 15:54:46 字數 1158 閱讀 5701

** 

命名管道的讀取端  fifo_read.c

#include#include#include#include#include#include#include#define fifo "/tmp/myfifo" //命名管道裝置名稱

int main(int argc,char** ar**)

while(1)

printf("read len=%d str=%s from fifo,nread=%d\n",strlen(r_buf),r_buf,nread);

sleep(1);

}close(fd);

return 0;

}

命名管道寫入端 fifo_write.c

#include#include#include#include#include#include#include#define fifo "/tmp/myfifo" //命名管道裝置名稱

int main(int argc,char** ar**)

if((mkfifo(fifo,o_creat|o_excl)<0)&&(errno!=eexist)) //開啟或建立命名管道

printf("cannot creat fifo \n");

printf("prepareing for writing bytes . .\n");

fd=open(fifo,o_wronly,0); //開啟命名管道這個檔案

if(fd<0)

/*for(i=0;i<(ar**-1);i++)

*/strcpy(w_buf,ar**[1]); //將命令列的第乙個引數出個陣列,將陣列的內容寫入到命名管道中

while(1)else

printf("write %s to the fifo\n",w_buf);

sleep(1);

}close(fd);

return 0;

}

在命令列輸入 ./fifo_read 

新建乙個終端,在新建的終端中輸入  ./fifo_write hello_fifo

這樣就可以實現在兩個不是父子程序關係的程序中同時使用命名管道,並實現命名管道的讀寫。

mysql使用命名管道 命名管道

管道是用於相關過程之間的通訊。我們是否可以使用管道進行不相關的程序通訊,比方說,我們要從乙個終端執行客戶端程式,從另乙個終端執行伺服器程式?答案是否定的。那麼怎樣才能實現不相關的程序通訊,簡單的答案就是使用 命名管道。即使這適用於相關的程序,但是使用命名管道進行相關的程序通訊沒有任何意義。我們使用乙...

命名管道的使用

我在工作中碰到了乙個這樣的問題,有兩個程式,第乙個程式會fork乙個程序exec呼叫第二個程式,這樣呼叫後,第乙個程式還是繼續執行父程序的。我要求第乙個程式的父程序停止執行,直到第二個程式退出或執行到某個時候才繼續執行。下面是兩個例子程式的 先執行gui程式,再執行player程式 gui 在後台執...

無名管道和有名管道的特性,特點

程序間通訊之管道 管道 無名管道 無名管道的建立和使用函式 標頭檔案 include 函式int pipe int filedes 2 int pipe int filedes 2 功能 經由引數 filedes 返回兩個檔案描述符 引數 filedes 為 int 型陣列的首位址,其存放了管道的檔...