亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_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號

回到頂部

主站蜘蛛池模板: 久草资源站在线 | 日本三级香港三级韩国三级 | 韩国一级片免费 | xxxx日日摸夜夜添夜夜添视频 | 在线免费日本 | 国产免费jizz在线播放视频 | 国产一卡二卡三卡四卡 | 久久久久亚洲精品影视 | 国产剧情演绎对白 | 九九精品视频在线播放 | 日本啊v在线观看 | 亚洲国产精品ⅴa在线观看 亚洲国产精品成人综合色在线婷婷 | 欧美精品一区二区三区在线 | 日本xxxx在线视频免费 | 免费黄色的软件 | 久久精品国产亚洲婷婷 | 人人添人人澡人人澡人人人人 | 久久精品2 | 日本免费在线视频 | 青青青在线观看视频免费播放 | 99久久久国产精品免费播放器 | 欧美性受xxxxx喷水 | 亚洲综合日韩中文字幕v在线 | 日本黄色片免费观看 | 欧美性色生活片天天看99 | 欧美一区精品二区三区 | 理论片一区 | 夜夜澡人人爽人人喊_欧美 一本大道久久a久久综合 | 欧美jizz8性欧美18 | 欧美激情一区二区三区中文字幕 | 日本视频在线看 | 日本高清视频一区二区三区 | 国产在线精品国自产拍影院午夜 | 日韩在线视频免费不卡一区 | 免费黄色网址在线播放 | 天天色天天色 | 天天更新天天久久久更新影院 | 欧美日韩在线视频播放 | 久久精品国产99国产精品亚洲 | 中文毛片无遮挡高清免费 | 国产中文99视频在线观看 |