Linux系統編程——管道

一、管道的分類

  • 無名管道:只能應用在有親緣關係的進程中,不提供原子操作,且爲半雙工方式,只能一端讀或者一端寫。如果需要達到全雙工的方式,則需要創建兩個無名管道。
  • 有名管道:可以應用在任意進程中,會創建對應的管道文件,提供原子操作,爲半雙工方式。

二、管道的相關函數

1、無名管道的創建:

  • int pipe(int pipefd[2]);
  • 其中:pipefd[0]存放的爲讀取端的文件描述符、pipefd[1]存放的爲寫端的文件描述符
  • 將得到的文件描述符,通過像文件IO一樣進行數據的讀寫

2、有名管道的創建(不能重複創建,創建前需要判斷管道是否存在):

  •  int mkfifo(const char *pathname, mode_t mode);
  • int access(const char *pathname, int mode);//判斷對應管道是否存在
  • 當創建了有名管道後,對有名管道的操作與文件IO的操作類似

三、管道使用的一般步驟

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章