偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

進(jìn)程及進(jìn)程間的通信

開發(fā) 開發(fā)工具
對(duì)于軟件開發(fā)人員來說,不管你做的是前端、WEB、中間件、底層,還是其他,掌握進(jìn)程相關(guān)知識(shí)都是非常重要的。在這篇文章中,根據(jù)查閱到的資料,我介紹一下進(jìn)程及進(jìn)程間通信的方式,供大家溫習(xí)基礎(chǔ)知識(shí)。

對(duì)于軟件開發(fā)人員來說,不管你做的是前端、WEB、中間件、底層,還是其他,掌握進(jìn)程相關(guān)知識(shí)都是非常重要的。最近,我被問到了一個(gè)問題:進(jìn)程間通信的方式都有哪些?作為一位多年的開發(fā)者,我竟然一時(shí)答不上來(相當(dāng)?shù)膶擂?。后來,我在網(wǎng)上查閱了相關(guān)資料,算是對(duì)這個(gè)問題有了大致的了解。在這篇文章中,根據(jù)查閱到的資料,我介紹一下進(jìn)程及進(jìn)程間通信的方式,供大家溫習(xí)基礎(chǔ)知識(shí),也希望大家在從事開發(fā)工作的同時(shí),不要忘了強(qiáng)化自己的基礎(chǔ)知識(shí)。

進(jìn)程及進(jìn)程間的通信

進(jìn)程簡(jiǎn)介

進(jìn)程的概念已經(jīng)出現(xiàn)有半個(gè)多世紀(jì)了,它是60年代初首先在麻省理工學(xué)院的MULTICS系統(tǒng)和IBM公司的CTSS/360系統(tǒng)中引入的。

進(jìn)程的定義有廣義和狹義之分。狹義的進(jìn)程是指正在運(yùn)行的程序的實(shí)例;廣義的進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元。

關(guān)于進(jìn)程,需要注意的有兩點(diǎn):***,進(jìn)程是一個(gè)實(shí)體,每一個(gè)進(jìn)程都有它自己的地址空間;第二,進(jìn)程是一個(gè)“執(zhí)行中的程序”(只有當(dāng)操作系統(tǒng)執(zhí)行它的時(shí)候,它才能成為一個(gè)活動(dòng)的實(shí)體)。

進(jìn)程間通信的方式

進(jìn)程之間通信的方式有以下8種:

***種,無名管道(pipe):它是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用(進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系)。

第二種,高級(jí)管道(popen):將另一個(gè)程序當(dāng)做一個(gè)新的進(jìn)程在當(dāng)前程序進(jìn)程中啟動(dòng),則它算是當(dāng)前程序的子進(jìn)程,這種方式稱為高級(jí)管道方式。具體的程序執(zhí)行可參考這篇文章:http://blog.csdn.net/zhouzhaoxiong1227/article/details/50403299。

第三種,有名管道(named pipe):它也是半雙工的通信方式,但是它允許無親緣關(guān)系的進(jìn)程進(jìn)行通信。

第四種,消息隊(duì)列(message queue):它是一種數(shù)據(jù)結(jié)構(gòu),存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí);它克服了信號(hào)傳遞信息少、管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。具體的隊(duì)列操作可參考這篇文章:http://blog.csdn.net/zhouzhaoxiong1227/article/details/52186663

第五種,信號(hào)量(semaphore):它是一個(gè)計(jì)數(shù)器,可以用來控制多個(gè)進(jìn)程對(duì)共享資源的訪問;它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪問共享資源時(shí),其他進(jìn)程也訪問該資源。因此,它主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段。

第六種,信號(hào)(signal):它是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。

第七種,共享內(nèi)存(shared memory):它是由程序映射的一段能被其他進(jìn)程所訪問的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問;它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門設(shè)計(jì)的,往往與其他通信機(jī)制(如信號(hào)量)配合使用來實(shí)現(xiàn)進(jìn)程間的同步和通信。

 

第八種,套接字(socket):它也是一種進(jìn)程間通信機(jī)制,與其他通信機(jī)制不同的是,它可用于不同機(jī)器間的進(jìn)程通信。具體的socket的消息流程可參考這篇文章:http://blog.csdn.net/zhouzhaoxiong1227/article/details/46416555。

【本文是51CTO專欄作者“周兆熊”的原創(chuàng)文章,作者微信公眾號(hào):周氏邏輯(logiczhou)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2020-11-18 09:06:04

Python

2010-01-05 10:00:48

Linux進(jìn)程間通信

2011-06-22 17:09:50

QT 進(jìn)程 通信

2020-11-04 07:17:42

Nodejs通信進(jìn)程

2019-11-08 14:47:49

TCPIP網(wǎng)絡(luò)

2018-05-30 13:58:02

Linux進(jìn)程通信

2019-05-08 11:10:05

Linux進(jìn)程語言

2018-01-12 14:35:00

Linux進(jìn)程共享內(nèi)存

2017-06-19 13:36:12

Linux進(jìn)程消息隊(duì)列

2013-03-28 13:14:45

AIDL進(jìn)程間通信Android使用AI

2022-07-04 08:29:13

electron通信

2019-11-27 10:36:11

進(jìn)程通信IPC

2011-06-24 14:01:34

Qt QCOP 協(xié)議

2019-06-04 09:00:00

Linux進(jìn)程進(jìn)程間通信

2022-02-07 09:10:34

進(jìn)程通信加鎖

2020-12-01 09:22:43

進(jìn)程協(xié)程開發(fā)

2019-05-13 10:00:41

Linux進(jìn)程間通信命令

2021-01-22 10:58:16

網(wǎng)絡(luò)安全進(jìn)程間碼如

2021-01-18 05:11:14

通信Nodejs進(jìn)程

2024-01-03 10:17:51

Linux通信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)