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)文章
詳解CentOS7 安裝 MariaDB 10.2.4的方法
這篇文章主要介紹了CentOS7 安裝 MariaDB 10.2.4的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11linux 定時(shí)休眠的實(shí)現(xiàn)思路
這篇文章主要介紹了linux 定時(shí)休眠的實(shí)現(xiàn)思路,休眠的類型有三種類型,文章對(duì)每種類型介紹的都很詳細(xì),需要的朋友可以參考下2018-07-07從Windows到Linux的三種文件傳輸實(shí)現(xiàn)方式
文章介紹了在跨平臺(tái)工作環(huán)境中將文件從Windows系統(tǒng)傳輸?shù)絃inux服務(wù)器的幾種方法,包括使用SCP命令、搭建Web服務(wù)和使用wget下載文件,每種方法都有其特點(diǎn),如安全性、速度、易用性和適用場(chǎng)景等2024-12-12Linux inotify實(shí)時(shí)備份實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Linux inotify實(shí)時(shí)備份實(shí)現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07