色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號

回到頂部

主站蜘蛛池模板: 黑人外教啪啪中国女留学生 | 少妇办公室好紧好爽再浪一点 | 欧洲精品码一区二区三区 | gay男同帅哥网站在线观看 | 亚l州综合另中文字幕 | 国产精品白丝JK白祙喷水视频 | 亚洲av极品视觉盛宴 | 欧美性生活区 | 亚洲色偷偷综合亚洲AV伊人 | 五月丁香六月狠狠爱综合 | 国产高清在线观看AV片 | 亚洲精品久久久久久久蜜臀老牛 | 欧美丰满熟妇乱XXXXX图片 | 欧美丰满大胆少妇xxxooo | 好大好硬好深好爽想要 | 妺妺窝人体色www美国 | ㊣最新国产の精品bt伙计久久 | 国产亚洲三区 | 无码人妻aⅴ一区二区三区鲁大师 | 无码国产一区二区三区四区 | 亚洲色无码A片一区二区潘甜甜 | 亚洲亚洲中文字幕无线码 | 人妻蜜と1~4中文字幕月野定规 | 中文在线免费一区三区 | 黄色影院在线播放 | 欧美视频一二三区 | 国产精品扒开腿做爽爽爽A片小 | 野花香视频在线观看免费高清版 | 99久久亚洲综合精品成人网 | 中文字幕一区二区三区5566 | 欧美肥大BBBBBBBBB | 三级女的在洗澡三级 | 国产精一品亚洲二区在线播放 | 麻豆国产成人av一区二区三区 | 久久精品4| 中文字幕av无码一区二区三区 | 中文字幕第38页 | 蜜桃视频在线观看www | 老司机中文字幕无码网站 | 男人的天堂色 | 国产网址在线观看 |