色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > IPC機制之管道

IPC機制之管道 時間:2018-12-17      來源:華清遠見

每個進程各自有不同的用戶地址空間,任何一個進程的全局變量在另一個進程中都看不到,所以進程之間要交換數據必須通過內核,在內核中開辟一塊緩沖區,進程1把數據從用戶空間拷到內核緩沖區,進程2再從內核緩沖區把數據讀走,內核提供的這種機制稱為進程間通信(IPC,InterProcess Communication)。

管道是一種最基本的IPC機制,由pipe函數創建:

int pipe(int filedes[2]);

調用pipe函數時在內核中開辟一塊緩沖區(稱為管道)用于通信,它有一個讀端一個寫端,然后通過filedes參數傳出給用戶程序兩個文件描述符,filedes[0]指向管道的讀端,filedes[1]指向管道的寫端(很好記,就像0是標準輸入1是標準輸出一樣)。所以管道在用戶程序看起來就像一個打開的文件,通過read(filedes[0]);或者write(filedes[1]);向這個文件讀寫數據其實是在讀寫內核緩沖區。pipe函數調用成功返回0,調用失敗返回-1。

管道具體的劃分為兩種:命令管道與匿名管道

1.命名管道(FIFO)

匿名管道應用的一個限制就是只能在具有共同祖先(具有親緣關系)的進程間通信。

如果我們想在不相關的進程之間交換數據,可以使用FIFO文件來做這項工作,它經常被稱為命名管道。

命名管道可以從命令行上創建,命令行方法是使用下面這個命令:

$ mkfifo filename

命名管道也可以從程序里創建,相關函數有:

int mkfifo(const char *filename,mode_t mode);

2.匿名管道

匿名管道由pipe函數創建并打開。

命名管道由mkfifo函數創建,打開用open。

FIFO(命名管道)與pipe(匿名管道)之間唯一的區別在它們創建與打開的方式不同,這些工作完成之后,它們具有相同的語義。

3.命名管道的打開規則

如果當前打開操作是為讀而打開FIFO時

O_NONBLOCK disable:阻塞直到有相應進程為寫而打開該FIFO

O_NONBLOCK enable:立刻返回成功

如果當前打開操作是為寫而打開FIFO時

O_NONBLOCK disable:阻塞直到有相應進程為讀而打開該FIFO

O_NONBLOCK enable:立刻返回失敗,錯誤碼為ENXIO

需要注意的是打開的文件描述符默認是阻塞的,大家可以寫兩個很簡單的小程序測試一下,主要也就一條語句

int fd = open("p2", O_WRONLY); 假設p2是命名管道文件,把打開標志換成 O_RDONLY 就是另一個程序了,可以先運行RD程序,此時會阻塞,再在另一個窗口運行WR程序,此時兩個程序都會從open返回成功。非阻塞時也不難測試,open時增加標志位就可以了。

 

上一篇:什么是Bootloader

下一篇:哈夫曼算法原理

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 四虎影视在线影院在线观看免费视频 | 波多野结衣的AV一区二区三区 | 欧美Z0ZO人禽交欧美人禽交 | 国内揄拍国内精品人妻浪潮AV | 人妻中文字幕无码专区 | 国产高清av首播原创麻豆 | 国产69精品久久久久人妻 | 久久视频在线视频观看天天看 | 在线综合 亚洲 欧美在线视频 | 在线视频 一区 二区 | 欧美一级大片在线观看 | 就去色成人网 | 人人人人爽| 无翼乌工口肉肉无遮挡无码18 | 亚洲国产福利成人一区二区 | 日本边添边摸边做边爱喷水 | www.蜜桃视频.com | 亚洲欧洲综合网 | 日本高清毛片中文视频 | 亚洲毛片无码专区亚洲乱 | 成人黄网站片免费视频软件 | 亚洲人成色99999在线观看 | 少女哔哩哔哩视频在线看 | 國产一二三内射在线看片 | 呦交小U女国产精品视频 | 日本护士xxxxhd| 国产午夜福利片 | 精品一区二区三区影院在线午夜 | 中国老太毛茸茸xxxxhd | 九九九精品成人免费视频 | 波多野结衣视频在线 | 老司机午夜永久免费影院 | 精品国产不卡在线观看免费 | 人妻熟妇乱又伦精品HD | 精品国产一区二区AV片 | 在线观看中文视频 | 免费人成视频19674不收费 | 在线免费观看日本欧美 | 最近2019免费中文字幕视频三 | 97色偷偷色噜噜男人的天堂 | 久久人人爽人人人澡A片 |