精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux中的有名管道和無名管道

系統 Linux
今天帶小伙伴們一起學習一下Linux中的有名管道和無名管道的使用,先大致介紹下有名管道和無名管道相關的內容,接著進行函數的學習,最后擼代碼!

[[382493]]

今天帶小伙伴們一起學習一下Linux中的有名管道和無名管道的使用,先大致介紹下有名管道和無名管道相關的內容,接著進行函數的學習,最后擼代碼!

1 無名管道與有名管道的區別

管道分為無名管道(pipe)和有名管道(FIFO)兩種。

無名管道只能用于公共祖先的兩個進程間的通信,原因是自己創建的管道在別的進程中并不可見。

有名管道可用于同一系統中的任意兩個進程間的通信。

1)無名管道

無名管道創建完成后,等同于操作文件。

無名管道的讀端被視作一個文件,寫端也被視作一個文件。

創建用pipe,操作用read、write、close。

① 無名管道通信是單向的,有固定的讀端和寫端。

② 數據被進程從管道讀出后,管道中的數據就不存在了。

③ 進程讀取空管道時,進程會阻塞。

④ 進程往滿的管道寫入數據時,進程會阻塞。

⑤ 管道容量最大為64KB,可以通過宏PIPE_BUFFERS進行設置。

下面補充兩個無名管道的兩個說明。

<1 關于公共祖先進程的說明。

管道可以用于任意兩個或更多相關進程之間的通信,只要在創建子進程的系列調用之前通過一個共同的祖先進程創建管道即可。

如管道可用于一個進程和其子孫進程之間的通信。第一個進程創建管道,然后創建子進程,接著子進程再創建第一個進程的孫子進程。

管道通常用于兩個兄弟進程之間的通信——它們的父進程創建了管道,并創建兩個子進程。

<2 關于無名管道半雙工的說明。

一般來說管道是半雙工的,有些系統實現了全雙工的功能,但為了方便移植盡量使用半雙工方式使用管道。

半雙工情況下,管道的兩端在一個進程中相互連接,數據需要通過內核在管道中流動。

單個進程對管道進行讀寫是沒有問題的,但應用比較多的是兩個進程之間的通信,但此時存在競爭的問題。

如果創建兩個管道,需要注意死鎖的問題。如果兩個進程都試圖從空管道中讀取數據或嘗試向已滿的管道中寫入數據就可能會發生死鎖。

此時由于半雙工的原因,就需要關閉不需要的讀端和寫端,下圖是父子進程進行通信的示意圖。

圖片

2)有名管道

有名管道又叫FIFO文件,它的操作與文件操作類似,需要創建、打開和關閉等操作。

創建用mkfifo,刪除用unlink,讀寫用read、write,打開關閉用open、close。

FIFO文件的操作與普通文件的操作差異如下:

① 讀取FIFO文件的進程只能以“RDONLY”方式打開FIFO文件。

② 寫FIFO文件的進程只能以“WRONLY”方式打開FIFO文件。

③ FIFO文件里面的內容被讀取后,就消失了。但是普通文件里面的內容讀取后還存在。

2 Linux下的無名管道

1)pipe函數

pipe函數用于創建無名管道。

① 函數原型。

  1. int pipe(int pipefd[2]) 

② 頭文件。

 

  1. include <unistd.h>  

③ 參數。

pipefd[0]:讀管道。

pipefd[1]:寫管道。

④ 返回值。

成功:0。

失敗:-1。

3 Linux下的有名管道

1)mkfifo函數

mkfifo函數用于創建有名管道。

① 函數原型。

  1. int mkfifo(const char* pathname, mode_t mode) 

② 頭文件。

  1. include <sys/type.h>  
  2.  
  3. include <sys/stat.h>  

③ 參數。

pathname:要創建的fifo文件的名字,帶路徑。

mode:要創建的fifo文件的訪問權限。

④ 返回值。

成功:0。

失敗:-1。

2)unlink函數

unlink函數用于刪除有名管道,其實它可以刪除FIFO文件,也可以刪除普通文件。

① 函數原型。

  1. int unlink(const char* pathname) 

② 頭文件。

 

  1. include <unistd.h>  

③ 參數。

pathname:要創建的fifo文件的名字,帶路徑。

④ 返回值。

成功:0。

失?。?1。

3)open函數

open函數用于打開一個有名管道。

① 函數原型。

  1. int open(constchar *pathname, int flags) 
  2. int open(constchar *pathname, int flags, mode_t mode) 

② 頭文件。

  1. #include <sys/types.h> 
  2. #include <sys/stat.h> 
  3. #include <fcntl.h> 

③ 參數。

pathname: 要打開的文件名(含路徑)。

flags: 文件打開的標志(這里只介紹兩種,更多的可以man 2 open查看)。

O_APPEND: 以追加的方式打開文件。

O_CREAT: 當打開的文件不存在的時候,創建該文件。

mode: 一定是在flags中使用了O_CREAT標志,mode記錄待創建的訪問權限。

④ 返回值。

成功:返回文件描述符。

失?。悍祷?1。

4)read函數

read函數用于讀有名管道。

① 函數原型。

  1. ssize_t read(int fd, void *buf, size_t count

② 頭文件。

 

  1. #include <unistd.h> 

③ 參數。

fd:要讀取文件的文件描述符。

buf:讀緩沖的起始地址(讀取來的數據存到buf指向的空間)。

count:讀到的字節數。

④ 返回值。

成功:讀到的字節數。

失?。悍祷?1。

5)write函數

write函數用于寫有名管道。

① 函數原型。

  1. ssize_t write(int fd, const void *buf, size_t count

② 頭文件。

 

  1. #include <unistd.h> 

③ 參數。

fd:文件描述符。

buf:文件數據緩沖區。

count:所要寫的數據字節數。

④ 返回值。

成功:寫入的字節數。

失?。悍祷?1。

6)close函數

close函數用于關閉有名管道。

① 函數原型。

  1. int close(int fd) 

② 頭文件。

 

  1. #include <unistd.h> 

③ 參數。

fd:待關閉的文件描述符。

④ 返回值。

成功:返回0。

失敗:返回-1。

4 實例代碼

下面用兩個小程序用一下上面介紹的有名管道和無名管道。

1)無名管道的使用實例

實例代碼如下,說明都在代碼注釋中了,圖片。

PipeTest.c。

  1. #include <unistd.h> 
  2.  
  3. #include <stdio.h> 
  4. #include <stdlib.h> 
  5.  
  6. void main(void) 
  7.       pid_t pid = 0;                   // 進程的pid 
  8.      
  9.       int pipefd[2];                   // 讀寫管道的文件描述符 
  10.       char buf[20];                    // 數據緩沖 
  11.           
  12.       pipe(pipefd);                    // 創建管道 
  13.      
  14.       pid = fork();                    // 創建子進程 
  15.      
  16.       if(pid > 0)                      // 父進程 
  17.       { 
  18.             close(pipefd[0]);          // 這是一個習慣,關閉不用的管道 
  19.       
  20.             write(pipefd[1],"Test pipe!",11);  // 將數據寫入管道 
  21.          
  22.             wait();                    // 等待子進程執行完退出 
  23.          
  24.             close(pipefd[1]);          // 用完關掉文件 
  25.          
  26.             exit(0);                   // 進程退出 
  27.      } 
  28.      
  29.      if(pid == 0)                      // 子進程 
  30.      { 
  31.        
  32.            close(pipefd[1]);           // 這是一個習慣,關閉不用的管道 
  33.        
  34.            read(pipefd[0],buf,11);     // 讀取管道內容,并打印 
  35.        
  36.            printf("\nThe pipe's context is %s\n\n",buf); //子進程可以讀到父進程寫入管道的內容Test! 
  37.        
  38.            close(pipefd[0]);           // 關閉管道 
  39.        
  40.            exit(0);                    // 進程退出 
  41.      }     
  42.           

運行結果如下:

2)有名管道的使用實例

實例代碼如下,說明都在代碼注釋中了。

  WriteFIFO.c。

  1. #include <sys/types.h> 
  2. #include <sys/stat.h> 
  3. #include <fcntl.h> 
  4. #include <stdio.h> 
  5.  
  6. int main(void) 
  7.       int fifofd;                          // FIFO文件描述符 
  8.       int ret; 
  9.      
  10.       mkfifo("/tmp/fifo",0666);            // 創建FIFO文件 
  11.      
  12.       fifofd = open("/tmp/fifo",O_WRONLY); // 打開FIFO文件 
  13.      
  14.       ret = write(fifofd,"Test FIFO!",11); // 寫數據到FIFO文件,等待讀成功才返回 
  15.      
  16.       close(fifofd);                       // 關閉FIFO文件 
  17.      
  18.       return 0;   

 ReadFIFO.c。

  1. #include <sys/types.h> 
  2. #include <sys/stat.h> 
  3. #include <fcntl.h> 
  4. #include <stdio.h> 
  5.  
  6. void main(void) 
  7.       int fifofd;                                   // 管道文件描述符 
  8.       char buf[20];                                 // 數據緩沖 
  9.     
  10.       mkfifo("/tmp/fifo",0666);                     // 創建FIFO文件 
  11.      
  12.       fifofd = open("/tmp/fifo",O_RDONLY);          // 打開FIFO文件 
  13.      
  14.       read(fifofd,buf,11);                          // 讀FIFO文件 
  15.      
  16.       printf("\nThe FIFO's content is %s\n\n",buf); // 顯示讀到FIFO文件的內容 
  17.      
  18.       unlink("/tmp/fifo");                          // 刪除FIFO文件 

運行結果如下:

先運行WriteFIFO操作,此時會阻塞,接著運行ReadFIFO,打印并解除阻塞。

本文轉載自微信公眾號「嵌入式雜牌軍」,可以通過以下二維碼關注。轉載本文請聯系嵌入式雜牌軍公眾號。

 

責任編輯:武曉燕 來源: 嵌入式雜牌軍
相關推薦

2020-10-10 07:18:14

Linux系統編程管道

2018-09-10 08:45:04

Linux管道命令

2023-08-08 07:18:17

協程管道函數

2022-11-14 15:07:09

Linux管道

2020-04-17 08:34:39

Linux管道

2020-02-24 11:37:56

Linux重定向管道

2021-07-06 21:30:06

Linux進程通信

2019-05-13 10:00:41

Linux進程間通信命令

2010-01-21 11:22:35

Linux多線程同步

2021-09-30 10:45:33

Linux進程通信

2014-07-02 21:20:56

CA TechnoloAPI

2010-10-25 16:52:48

oracle管道函數

2009-06-17 17:13:40

UNIX

2009-06-17 09:11:24

Unix管道重定向

2023-06-13 08:00:00

機器學習PythonMLOps

2020-12-09 11:10:12

shellLinux管道

2023-06-26 14:03:31

2014-04-25 10:13:00

Go語言并發模式

2022-11-21 06:55:08

golang協程

2019-11-27 10:36:11

進程通信IPC
點贊
收藏

51CTO技術棧公眾號

中国免费黄色片| 亚洲欧洲精品一区二区三区波多野1战4 | 无码人妻精品一区二区中文| 国产一区影院| 一区二区三区在线播放| 国产专区一区二区三区| 久久精品五月天| 一区二区三区四区电影| 亚洲国产天堂久久综合| 激情五月俺来也| 成人av影院在线观看| 久久久久久一级片| 亚洲自拍欧美色图| 天天干天天操天天爱| 无需播放器亚洲| 日韩精品极品在线观看| 在线免费观看av网| 欧美日韩123区| 亚洲欧美日本在线| 欧美日韩国产一二| 亚洲国产福利视频| 麻豆专区一区二区三区四区五区| 欧美国产日韩一区| 日韩av网站在线播放| 日本欧美三级| 中文高清一区| 久久电影网电视剧免费观看| 欧美国产日本高清在线| 日韩影视一区二区三区| 岛国成人av| 欧美一区二区三区视频在线| 粉嫩虎白女毛片人体| 国模私拍视频在线播放| 国产精品久久三区| 欧美成熟毛茸茸复古| 午夜精品在线播放| 国产一区二区在线观看视频| 国产精品www色诱视频| 日韩精品视频免费看| 亚洲人metart人体| 久久精品成人欧美大片| 99国产精品免费| 亚洲天堂日韩在线| 国产婷婷成人久久av免费高清| 午夜精品电影在线观看| 日本一区高清| 99久久国产免费看| 国产精品一区二区免费| 亚洲第一精品网站| 国产一区美女在线| 成人在线中文字幕| 97人妻一区二区精品免费视频| 久久永久免费| 国产99久久精品一区二区永久免费 | 加勒比色老久久爱综合网| 7777精品伊人久久久大香线蕉的| 在线视频日韩一区| 久久久人成影片一区二区三区在哪下载| 精品福利樱桃av导航| 欧洲精品一区二区三区久久| 欧洲一区二区三区| 一区二区三区成人| 亚洲精品久久久久久久蜜桃臀| 日本孕妇大胆孕交无码| 一区二区三区中文字幕精品精品 | 色综合天天综合色综合av| 无罩大乳的熟妇正在播放| 白浆视频在线观看| 精品日韩中文字幕| 久久久久久久久久久久久国产精品 | 欧美一性一交| 亚洲男子天堂网| 亚洲女优在线观看| 欧美激情欧美| 欧美大片欧美激情性色a∨久久| 男人与禽猛交狂配| 伊人狠狠色j香婷婷综合| 97香蕉超级碰碰久久免费软件 | 中文在线最新版地址| 黑人巨大精品欧美一区二区一视频 | 国产视频123区| 无码一区二区三区视频| 欧美高清在线观看| www.久久精品视频| 九色porny丨国产精品| aa成人免费视频| 色视频在线观看| 国产精品免费久久| 青青在线视频免费观看| 欲香欲色天天天综合和网| 欧美性高清videossexo| 久久久精品视频国产| 欧美激情影院| 久久天堂电影网| 偷偷操不一样的久久| 欧美aaa在线| 91久久精品www人人做人人爽| 色欲av永久无码精品无码蜜桃| 久久精品亚洲国产奇米99| 最新黄色av网站| 亚洲永久av| 91精品国产综合久久香蕉的特点 | 国产欧美一区| 欧美日本啪啪无遮挡网站| 久久久久久少妇| 国产精品一区一区三区| 欧美激情视频一区二区三区| 免费黄色电影在线观看| 午夜精品一区二区三区三上悠亚 | 国产99久久久| 国产麻豆精品久久一二三| 精品国产福利| 成人av黄色| 色婷婷久久综合| 又大又长粗又爽又黄少妇视频| 国产剧情一区| 午夜精品福利在线观看| 一区二区三区黄色片| 91视频国产观看| 色哺乳xxxxhd奶水米仓惠香| 三上悠亚亚洲一区| 精品久久久久一区二区国产| 自拍偷拍你懂的| 麻豆91精品| 国产一区精品在线| 四虎影视国产在线视频| 欧美日韩大陆在线| 无码国产69精品久久久久同性| 亚洲国产高清一区二区三区| 成人免费淫片aa视频免费| 精品电影在线| 欧美日韩国产一区二区| 日本精品一二三| 伊人色**天天综合婷婷| 国产精品青青在线观看爽香蕉 | 日韩中文字幕视频网| 自拍亚洲一区欧美另类| 亚洲综合久久网| 99这里都是精品| 欧美视频免费看欧美视频| 色悠久久久久综合先锋影音下载| 日韩中文字幕在线视频播放| 日韩手机在线视频| 91美女视频网站| 玩弄中年熟妇正在播放| 福利欧美精品在线| 欧美激情女人20p| www.日韩在线观看| 亚洲欧美一区二区三区久本道91| 在线观看免费的av| 日韩在线观看一区| 国产欧美一区二区三区久久| yiren22综合网成人| 91久久奴性调教| 一区二区精品免费| 日韩成人一区二区| 婷婷久久青草热一区二区 | 亚洲先锋成人| 国产伦精品一区二区三区照片| 国产白丝在线观看| 日韩av最新在线观看| 三级视频在线观看| 久久久久久麻豆| 亚洲国产精品三区| 91一区二区三区四区| 成人欧美在线视频| 高h视频在线观看| 精品国产人成亚洲区| 国产精品19乱码一区二区三区| www.99精品| 无码人妻h动漫| 秋霞欧美视频| 91在线中文字幕| 丁香高清在线观看完整电影视频| 亚洲成avwww人| 国产剧情在线视频| 国产精品视频观看| 青青草原播放器| 亚洲美女视频在线免费观看| 久久久久久久久一区二区| 91福利精品在线观看| 久久夜精品香蕉| 日本精品久久久久| 色婷婷久久综合| www.色小姐com| 99riav久久精品riav| 第四色婷婷基地| 精品91视频| 视频一区二区三| 亚洲专区**| 热久久美女精品天天吊色| 午夜激情在线观看| 亚洲精品在线观看网站| 欧美一级黄视频| 亚洲精品成人精品456| 美女久久久久久久久久| 狠狠久久亚洲欧美| 97成人在线观看视频| 久久看人人摘| 精品无人区一区二区三区| 日韩美女在线| 55夜色66夜色国产精品视频 | 中文字幕一区二区三区精华液 | aa在线免费观看| 久久精品青草| 欧美精品尤物在线| 美女精品久久| 国产成人亚洲综合| 欧美xxxx黑人又粗又长| 在线观看视频99| 人人妻人人澡人人爽人人欧美一区| 色老汉一区二区三区| 免费一级黄色大片| 国产精品美女久久久久av爽李琼 | 国产精品久久久久久久久久免费看| 国产香蕉精品视频| 精品一区二区三区香蕉蜜桃| 四虎永久在线精品无码视频| 欧美天堂亚洲电影院在线观看 | 国产a一区二区| 免费视频观看成人| 91精品国产91久久久久久不卡| 1区2区3区在线视频| 中文在线不卡视频| 三级视频在线播放| 精品欧美一区二区久久| 国产又粗又长又黄| 欧美性色综合网| 在线视频一区二区三区四区| 亚洲国产日韩a在线播放性色| 视频国产一区二区| 久久精品视频在线看| 国产chinese中国hdxxxx| 激情文学综合插| 亚洲精品久久久中文字幕| 免费日韩精品中文字幕视频在线| 青青草精品视频在线| 国产精品v日韩精品v欧美精品网站| 一区二区三区在线视频看| 国产一区二区三区四区大秀| 久久久福利视频| 欧美做受69| 久久伊人一区二区| 人人精品亚洲| 蜜桃臀一区二区三区| 啪啪激情综合网| 国产精品自拍首页| 国产成人在线中文字幕| 国产 高清 精品 在线 a| 午夜精品在线| 成人av中文| 国产精品久av福利在线观看| 国产精品一区二区av| 久久久亚洲欧洲日产| 狠狠色综合色区| 亚洲国产最新| 日本一区视频在线播放| 国产一区不卡| 一区二区在线高清视频| 999视频精品| 国产免费内射又粗又爽密桃视频| 欧美jjzz| 国自产拍偷拍精品啪啪一区二区| 国产精品亚洲综合色区韩国| 日韩在线xxx| 美国一区二区三区在线播放| av免费一区二区| 国产精品系列在线播放| 性欧美18—19sex性高清| 99精品热视频| 免费人成又黄又爽又色| 一区在线中文字幕| 免费毛片在线播放免费| 欧美性感美女h网站在线观看免费| 天干夜夜爽爽日日日日| 欧美日韩情趣电影| 亚洲精品18p| 亚洲色图在线观看| 黄色的网站在线观看| 久久久久久久影院| 蜜臀国产一区| 亚洲字幕一区二区| 欧美一区二区三区久久| 亚洲欧洲一二三| 亚洲电影av| 日韩av片网站| 国产.精品.日韩.另类.中文.在线.播放| 久久久久亚洲AV成人无码国产| 国产亚洲一区字幕| 国产大片免费看| 欧美性猛交xxxx免费看久久久| 亚洲无码精品在线播放| 精品av久久707| 天天综合视频在线观看| 性色av一区二区三区免费| 在线成人视屏 | 日产精品99久久久久久| 婷婷久久免费视频| 久久久久久久有限公司| 久久久久久久久久久9不雅视频| 老太脱裤子让老头玩xxxxx| 老司机一区二区| 人妻在线日韩免费视频| 亚洲欧美在线视频| 毛片在线免费视频| 日韩三级在线观看| aaa在线观看| 51午夜精品视频| 超碰在线成人| 中文字幕久久一区| 日韩电影免费一区| 30一40一50老女人毛片| 亚洲图片一区二区| 99精品国产99久久久久久97| 国产亚洲一级高清| 欧美一级鲁丝片| 国产精品青青草| 午夜精彩国产免费不卡不顿大片| 国模私拍视频在线观看| 久久久久久一二三区| 好看的av在线| 日韩av中文在线| 麻豆免费在线| 国产欧美日本在线| 国产在线成人| 中文字幕乱码在线人视频| 国产精品国产a| 亚洲一区 中文字幕| 亚洲性生活视频| 成人影院入口| 日本一区二区三区免费看| 一区二区动漫| 亚洲精品乱码久久久久久久| 亚洲成人久久影院| 狠狠综合久久av一区二区| 美女视频久久黄| 日韩精品久久久久久久软件91| 在线观看免费黄色片| 国产一区二区精品久久| 麻豆明星ai换脸视频| 777亚洲妇女| 超碰免费公开在线| 92国产精品视频| 国内自拍视频一区二区三区| 国产探花一区二区三区| 亚洲另类在线视频| 国产av精国产传媒| 久久在线视频在线| 免费亚洲电影| 成人h猎奇视频网站| 国产一区二区欧美| 免费在线激情视频| 久久综合久久久久88| 久草视频在线观| 亚洲欧洲av一区二区| 国产高清不卡| 性欧美大战久久久久久久免费观看| 久久亚洲欧洲| 四虎永久免费地址| 欧美精品在线观看一区二区| 嫩草香蕉在线91一二三区| 国产在线一区二区三区| 欧美xxxxx视频| 久久无码专区国产精品s| 夜夜爽夜夜爽精品视频| 婷婷综合激情网| 欧美一区三区三区高中清蜜桃| 精品国产成人| 蜜臀一区二区三区精品免费视频| 国产亚洲欧美日韩在线一区| 一区二区视频网站| 色婷婷综合成人| 电影一区二区在线观看| 女性女同性aⅴ免费观女性恋| 国产午夜精品理论片a级大结局| 日韩av免费播放| 久久亚洲精品中文字幕冲田杏梨| 欧美日韩黄网站| 大西瓜av在线| 久久精品一区二区三区不卡牛牛| 国产无遮挡又黄又爽又色视频| 久久亚洲国产精品| jazzjazz国产精品久久| 亚洲熟妇av一区二区三区| 中文字幕精品综合| 欧美一级淫片aaaaaa| 日韩免费观看av| 一本一本久久a久久综合精品| 中文字幕一区三区久久女搜查官| 欧美日韩一二三四五区| 国产鲁鲁视频在线观看特色| av在线不卡一区| 夜夜嗨网站十八久久| 国产在线观看免费视频软件| 日韩欧美一级片| 日本欧美不卡| 国产91视频一区| 国产欧美视频在线观看| a天堂在线视频| 国产精品免费在线免费|