亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:進(jìn)程間的通信方式總結(jié)

嵌入式學(xué)習(xí)筆記:進(jìn)程間的通信方式總結(jié) 時(shí)間:2018-09-04      來(lái)源:未知

進(jìn)程間的通信方式分為很多種,學(xué)習(xí)這個(gè)就要從這幾方面來(lái)入手,不妨一看

【1】常見的進(jìn)程間通信方式(7種)

【2】無(wú)名管道

【3】(FIFO)有名管道

【4】信號(hào)signal

【1】常見的進(jìn)程間通信方式(7種)

1)傳統(tǒng)的進(jìn)程間通信方式

無(wú)名管道(pipe)

有名管道(fifo)

信號(hào)(signal)---- 異步通信

2)System V IPC (Inter-Process Communication)

消息隊(duì)列(message queue)

共享內(nèi)存(share memory)

信號(hào)燈集(semaphore)

3)BSD

套接字(socket)

【2】無(wú)名管道

1)簡(jiǎn)介:

在內(nèi)核空間開辟一塊區(qū)域,并向進(jìn)程提供兩個(gè)文件描述符fd[0],fd[1]; fd[0]:固定用于讀管道

fd[1]:固定用于寫管道

先進(jìn)先出模式,消息被讀取后則刪除

在使用無(wú)名管道時(shí),應(yīng)創(chuàng)建無(wú)名管道,在使用fork()函數(shù)創(chuàng)建子進(jìn)程;

2)特點(diǎn):

1)只能用于具有親緣關(guān)系的父子進(jìn)程之間通信

2)半雙工的通行模式,具有固定的讀端和寫斷

3)管道可以看成時(shí)一種特殊文件,對(duì)于它的讀寫可以使用文件I/O(管道建立在內(nèi)核空間,

必須使用文件IO進(jìn)行訪問(wèn))(不支持lseek函數(shù))

4)讀操作被阻塞:當(dāng)管道中沒有數(shù)據(jù)時(shí)

寫操作被阻塞:管道被寫滿時(shí)(管道大小為64K);5)管道破裂:管道讀端被關(guān)閉,再向管道中寫入數(shù)據(jù)時(shí),

即向管道寫入數(shù)據(jù)的進(jìn)程會(huì)收到來(lái)自內(nèi)核發(fā)送的SIGPIPE信號(hào)6)數(shù)據(jù)存放于內(nèi)存中,讀取后就不存在了

3)使用步驟:

在對(duì)管道內(nèi)的數(shù)據(jù)進(jìn)行操作時(shí),必須使用文件IO,在對(duì)用戶空間的數(shù)據(jù)進(jìn)行操作時(shí),可以使用標(biāo)準(zhǔn)IO(擇優(yōu)選擇);

【3】(FIFO)有名管道

1)簡(jiǎn)介

在內(nèi)核開辟一塊空間,用來(lái)存儲(chǔ)數(shù)據(jù),但是此空間通過(guò)存儲(chǔ)在磁盤空間的文件名來(lái)操作;

先進(jìn)先出模式,消息被讀取后則刪除

2)特點(diǎn)

1)可以使互不相關(guān)的兩個(gè)進(jìn)程互相通信,有名管道可以通過(guò)路徑名來(lái)指出,并且在文件系統(tǒng)中可見

2)進(jìn)程通過(guò)文件IO來(lái)操作有名管道,內(nèi)容存放在內(nèi)存中

3)不支持lseek()操作

4)其它與無(wú)名管道一樣。

5)讀操作被阻塞:當(dāng)管道中沒有數(shù)據(jù)時(shí)

寫操作被阻塞:管道被寫滿時(shí)(管道大小為64K);

6)有名管道在被創(chuàng)建后,顯示大小為0(因?yàn)槠浯娣旁趦?nèi)存中)

7)有名管道文件在被單獨(dú)打開時(shí)(無(wú)論讀/寫)都會(huì)阻塞,直到讀端和寫端都被打開時(shí)停止阻塞

3)有名管道的阻塞問(wèn)題

由于普通文件的讀寫時(shí)不會(huì)出現(xiàn)阻塞問(wèn)題,而在管道的讀寫中卻有阻塞的可能,這里的非阻塞標(biāo)志可以在open()函數(shù)中設(shè)定為O_NONBLOCK。

對(duì)于O_RDONLY、 O_WRONLY、 O_NONBLOCK有4種組合方式:

1、open(const char *path,O_RDONLY)

在這種情況下,open 調(diào)用將阻塞,除非有一個(gè)進(jìn)程以寫方式打開同一個(gè)FIFO,否則它不會(huì)返回

2、open(const char *path,O_RDONLY|O_NONBLOCK )

即使沒有其它進(jìn)程以寫方式打開FIFO,這open調(diào) 用也將成功并馬上返回3、open(const char *path,O_WRONLY)

open調(diào)用將阻塞,直到有一個(gè)進(jìn)程以讀方式打開同一個(gè) FIFO為止。

4、open(const char *path,O_WRONLY|O_NONBLOCK )

open調(diào)用總是立刻返回,便如果沒有進(jìn)程以讀方式打開FIFO文件, open調(diào)用將返回一個(gè)錯(cuò)誤(-1)并且FIFO也不會(huì)被打開。

對(duì)于讀進(jìn)程

• 若該管道是阻塞打開,且當(dāng)前FIFO內(nèi)沒有數(shù)據(jù),則對(duì)讀進(jìn)程而言將一直阻塞到有數(shù)據(jù)寫入。

• 若該管道是非阻塞打開,則不論FIFO內(nèi)是否有數(shù)據(jù),讀進(jìn)程都會(huì)立即執(zhí)行讀操作。對(duì)于寫進(jìn)程

• 若該管道是阻塞打開,則寫操作將一直阻塞到數(shù)據(jù)可以被寫入。

• 若該管道是非阻塞打開而不能寫入全部數(shù)據(jù),則讀操作進(jìn)行部分寫入或者調(diào)用失敗。

4)使用步驟:

1)先在某一個(gè)進(jìn)程中使用mkfifo()在內(nèi)核空間中創(chuàng)建有名管道(在文件系統(tǒng)中

可見)

2)在需要使用有名管道的進(jìn)程中通過(guò) open()打開文件

3)使用文件IO對(duì)有名管道進(jìn)行訪問(wèn)

5)相關(guān)函數(shù)

【4】信號(hào)signal

1)簡(jiǎn)介

信號(hào)是在軟件層次上對(duì)中斷機(jī)制的一種模擬,是唯一一種異步通信方式

信號(hào)可以直接進(jìn)行用戶空間進(jìn)程和內(nèi)核進(jìn)程之間的交互,內(nèi)核進(jìn)程也可以利用它來(lái)通知用戶空間進(jìn)程發(fā)生了哪些系統(tǒng)事件

如果進(jìn)程當(dāng)前未處于執(zhí)行態(tài),則該信號(hào)就由內(nèi)核保存起來(lái),直到該進(jìn)程恢復(fù)執(zhí)行再傳遞給它

linux內(nèi)核通過(guò)信號(hào)通知用戶進(jìn)程,不同的信號(hào)類型代表不同的事件

如果一個(gè)進(jìn)程被設(shè)置為阻塞,則該信號(hào)的傳遞被延遲,直到其阻塞被取消時(shí)才被傳遞給進(jìn)程

用戶進(jìn)程對(duì)信號(hào)的響應(yīng)方式:

忽略信號(hào):對(duì)信號(hào)不做任何處理,但是有兩個(gè)信號(hào)不能被忽略:SIGKILL和SIGSTOP捕捉信號(hào):定義函數(shù)處理信號(hào),當(dāng)信號(hào)發(fā)生時(shí),自行相應(yīng)的處理函數(shù)執(zhí)行缺省操作:Linux對(duì)每種信號(hào)都規(guī)定了默認(rèn)操作

kill -l 34(SIGRTMIN)-64(SIGRTMAX) 可靠信號(hào) 信號(hào)可以被內(nèi)核保存萬(wàn)次 而其他信號(hào)只會(huì)被保存一次,如果程序處于暫停態(tài),且需多次接受相同信號(hào),內(nèi)核相同的信號(hào)只會(huì)發(fā)送一次給程序。

kill [-signal] pid 默認(rèn)發(fā)送SIGTERM(15)終止進(jìn)程 -signal指定信號(hào) pid指定發(fā)送對(duì)

killall [-u user | prog] prog指定進(jìn)程號(hào) user指定用戶名








上一篇:嵌入式學(xué)習(xí)筆記:c語(yǔ)言結(jié)構(gòu)體學(xué)習(xí)方法

下一篇:嵌入式學(xué)習(xí)筆記:C++繼承的三種方式,用實(shí)例教會(huì)你

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 亚洲人天堂 | 天天操夜夜草 | 日本欧美日韩 | 国产黄a三级三级看三级 | 国产精品亚洲片在线花蝴蝶 | 国产亚洲成归v人片在线观看 | 午夜视频在线观看182tv | 亚洲人成a在线网站 | 日韩经典在线观看 | 国产精品视频yuojizz | 另类国产精品一区二区 | 亚洲午夜精品久久久久久成年 | 国产精品久久久久久一区二区三区 | 久草视频在线首页 | 免费观看日本污污ww网站一区 | 国产成人视屏 | 欧美老bb | 国产丝袜 | аⅴ天堂 在线8 | 在线免费视频一区 | 免费观看欧美成人禁片 | 亚洲国产成a人v在线观看 | 久久精品国产欧美成人 | 二区三区在线观看 | 青青视频免费观看 | 九九九色视频在线观看免费 | 久久综合九色综合国产 | 精品久久久久久亚洲 | 91视频一区 | 99视频在线观看视频 | 婷婷99精品国产97久久综合 | 精品卡卡一卡二 | 狠狠操夜夜爽 | 日本黄色网址视频 | 天天做天天爱夜夜爽女人爽宅 | 狠狠色综合久久丁香婷婷 | 久久免费区一区二区三波多野 | 美女日批在线观看 | 巨熟乳波霸中文观看免费 | 国产成人精品日本亚洲专一区 | 精品欧美一区二区三区 |