Linux進(jìn)程間通信(IPC)的幾種方式總結(jié)
概述:
進(jìn)程間通信(IPC,Inter-Process Communication),指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法。進(jìn)程是計(jì)算機(jī)系統(tǒng)分配資源的最小單位(進(jìn)程是分配資源最小的單位,而線程是調(diào)度的最小單位,線程共用進(jìn)程資源)。每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的。為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。

主要方法:
管道:
分為兩種,
軟管道: 如 ps -ef | grep xxxx,
硬管道
消息隊(duì)列:
內(nèi)核創(chuàng)建一個(gè)消息隊(duì)列,操作系統(tǒng)中的多個(gè)進(jìn)程都可以操作這個(gè)消息隊(duì)列.可以向其發(fā)送消息,也可從中接收消息.
共享內(nèi)存:
每個(gè)進(jìn)程都有一個(gè)虛擬內(nèi)存地址和物理內(nèi)存地址的映射,一般兩個(gè)進(jìn)程的映射的物理內(nèi)存地址是不同的,共享內(nèi)存即是將其映射的物理內(nèi)存地址變成一樣的.這樣兩個(gè)進(jìn)程就可以訪問相同的物理內(nèi)存,也就可以實(shí)現(xiàn)進(jìn)程之間的通信.
套接字:
非常常見,如通過3306端口訪問某個(gè)遠(yuǎn)程mysql服務(wù), 我訪問mysql的這個(gè)進(jìn)程,和遠(yuǎn)程的這個(gè)mysql服務(wù)的進(jìn)程之間的通信,就是通過3306端口創(chuàng)建的TCP的套接字.
如果是訪問本機(jī)的mysql服務(wù),則不會(huì)走TCP套接字,而是走Linux底層的套接字
信號(hào)量:
類似一個(gè)計(jì)數(shù)器.控制多個(gè)進(jìn)程對(duì)一個(gè)共享資源的訪問.
信號(hào):
一個(gè)進(jìn)程可以向另一個(gè)進(jìn)程發(fā)送一個(gè)信號(hào).通過kill -l指令可以列出所有的信號(hào)


(64種死法...)
Linux中的信號(hào) 大多數(shù)作用是把一個(gè)進(jìn)程殺死,于是叫kill了..
當(dāng)tail -f xxx文件時(shí),是會(huì)一直是阻塞. 如何結(jié)束? 一般會(huì)按ctrl+c,
其實(shí)該命令就是當(dāng)前的shell($$可以看到當(dāng)前shell的pid),向tail -f進(jìn)程發(fā)送了一個(gè)信號(hào),該信號(hào)值是2,即SIGINT
kill -9 pid, 9號(hào)信號(hào)是SIGKILL.
如果不加,則默認(rèn)15號(hào)信號(hào)SIGTERM(即Terminal)
9號(hào)信號(hào)即kill信號(hào)是不能被捕捉的,必須強(qiáng)制停止. 其他信號(hào)可以在程序中捕捉到.
ctrl+c : SIGINT
kill不帶參數(shù): SIGTERM
KILL -9: SIGKILL
到此這篇關(guān)于Linux進(jìn)程間通信(IPC)的幾種方式總結(jié)的文章就介紹到這了,更多相關(guān)Linux進(jìn)程通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用vs2019進(jìn)行Linux遠(yuǎn)程開發(fā)的方法步驟
這篇文章主要介紹了使用vs2019進(jìn)行Linux遠(yuǎn)程開發(fā)的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
淺談Linux環(huán)境下gcc優(yōu)化級(jí)別
這篇文章主要介紹了Linux環(huán)境下gcc優(yōu)化級(jí)別,涉及gcc系列的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09
centos服務(wù)器下nginx圖片防盜鏈設(shè)置方法
本篇文章主要介紹了centos服務(wù)器下nginx防盜鏈設(shè)置方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
使用Linux系統(tǒng)函數(shù)遞歸遍歷指定目錄的功能實(shí)現(xiàn)
在 Linux 系統(tǒng)中,遞歸遍歷指定目錄是一個(gè)常見的需求,例如文件管理工具、備份工具或病毒掃描工具等,本文將詳細(xì)介紹如何使用 Linux 系統(tǒng)函數(shù)實(shí)現(xiàn)遞歸遍歷目錄的功能,需要的朋友可以參考下2025-10-10
SpringBoot整合Activiti7的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合Activiti7的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Linux Shell里面生成隨機(jī)數(shù)的一些思路分析
這篇文章主要介紹了Linux Shell里面生成隨機(jī)數(shù)的一些思路分析,需要的朋友可以參考下2016-07-07

