目錄理論
例子在int mkfifo(const char *pathname, mode_t mode)
成功返回o,出錯返回-1
他包含在標頭檔案:
#include
#include
這裡要注意:
1.只要對fifo有適當的訪問許可權,fifo可用在任何兩個沒有任何關係的程序之間通訊;
2.本質是核心中的一塊快取,另在檔案系統中以乙個特殊的裝置檔案(管道檔案)存在;
3.在檔案系統中只有乙個索引塊存放檔案的路徑,沒有資料塊,所有資料存放在核心中;
4.命名管道必須在讀和寫中同時開啟,否則單獨讀或者單獨寫會發生阻塞;
5.命令mkfifo建立命名管道(命令內部呼叫mkfifo函式)
6.對fifo的操作與操作普通檔案一樣;
程式執行截圖如下:
//從命名管道中讀取資料
char buf[512];
memset(buf, 0, sizeof(buf));
while(read(fd, buf, sizeof(buf)) < 0)
printf("%s\n", buf);
close(fd);
exit(0);
}fifo_write.c原始碼如下:
#include #include #include #include #include int main(int argc, char *ar**)
printf("open fifo write ... \n");
//開啟命名管道
int fd = open(ar**[1], o_wronly);
if(fd < 0)
else
char *s = "12345678901234";
size_t size = strlen(s);
if(write(fd, s, size) != size)
close(fd);
exit(0);
}
這裡要建立乙個pip,命令如下:mkfifo s.pipo
Linux 匿名管道pipe與命名管道FIFO
什麼是管道 功能 建立匿名管道 引數 fd 檔案描述符陣列,其中fd 0 表 示讀端,fd 1 表 示寫端 返回值 成功返回0,失敗返回錯誤 實現 include include include include int main memset buf,0x00,sizeof buf 從管道中讀取 i...
Linux命名管道
命名管道實現了沒有親緣關係的程序的通訊,建立命名管道時候,系統建立了乙個fifo的檔案,通過對檔案的操作,實現走了沒有親緣關係的管道也可以資料交換,相比普通管道 命名管道多了管道的開啟和刪除,因為是檔案嗎,當然劇本檔案的屬性了。1.可以通過該shell命令建立命名管道,mknod 和mkfifo,比...
Linux學習筆記(管道)
管道是一種兩個程序見進行單向通訊的機制,因為管道只能對資料進行單向傳遞,所以管道又稱為半雙工管道。管道是linux由unix繼承而來的ipc形式之一。管道分為無名管道與命名管道。管道的特點 1 只能在有親緣關係的程序之間進行通訊 也就是在父子程序之間通訊 2 單向通訊乙個讀端,乙個寫端,如果要雙向通...