Linux IPC命令的用法詳解
進程間通信概述
進程間通信有如下的目的:
1、數(shù)據(jù)傳輸,一個進程需要將它的數(shù)據(jù)發(fā)送給另一個進程,發(fā)送的數(shù)據(jù)量在一個字節(jié)到幾M之間;
2、共享數(shù)據(jù),多個進程想要操作共享數(shù)據(jù),一個進程對數(shù)據(jù)的修改,其他進程應(yīng)該立刻看到;
3、通知事件,一個進程需要向另一個或一組進程發(fā)送消息,通知它們發(fā)生了某件事情;
4、資源共享,多個進程之間共享同樣的資源。為了做到這一點,需要內(nèi)核提供鎖和同步機制;
5、進程控制,有些進程希望完全控制另一個進程的執(zhí)行(如Debug進程),此時控制進程希望能夠攔截另一個進程的所有陷入和異常,并能夠及時知道它的狀態(tài)改變。
Linux進程間通信由以下幾部分發(fā)展而來:
早期UNIX進程間通信:包括管道、FIFO、信號。
基于System V的進程間通信:包括System V消息隊列、System V信號燈(Semaphore)、System V共享內(nèi)存。
基于Socket進程間通信。
基于POSIX進程間通信:包括POSIX消息隊列、POSIX信號燈、POSIX共享內(nèi)存。
Linux中,與IPC相關(guān)的命令包括:ipcs、ipcrm(釋放IPC)、
IPCS命令是Linux下顯示進程間通信設(shè)施狀態(tài)的工具。我們知道,系統(tǒng)進行進程間通信(IPC)的時候,可用的方式包括信號量、共享內(nèi)存、消息隊列、管道、信號(signal)、套接字等形式[2]。使用IPCS可以查看共享內(nèi)存、信號量、消息隊列的狀態(tài)。
例如在CentOS6.0上執(zhí)行ipcs
具體的用法總結(jié)如下:
1、顯示所有的IPC設(shè)施
# ipcs -a
2、顯示所有的消息隊列Message Queue
# ipcs -q
3、顯示所有的信號量
# ipcs -s
4、顯示所有的共享內(nèi)存
# ipcs -m
5、顯示IPC設(shè)施的詳細信息
# ipcs -q -i id
id 對應(yīng)shmid、semid、msgid等。-q對應(yīng)設(shè)施的類型(隊列),查看信號量詳細情況使用-s,查看共享內(nèi)存使用-m。
6、顯示IPC設(shè)施的限制大小
# ipcs -m -l
-m對應(yīng)設(shè)施類型,可選參數(shù)包括-q、-m、-s。
7、顯示IPC設(shè)施的權(quán)限關(guān)系
# ipcs -c
# ipcs -m -c
# ipcs -q -c
# ipcs -s -c
8、顯示最近訪問過IPC設(shè)施的進程ID。
# ipcs -p
# ipcs -m -p
# ipcs -q -p
9、顯示IPC設(shè)施的最后操作時間
# ipcs -t
# ipcs -q -t
# ipcs -m -t
# ipcs -s -t
10、顯示IPC設(shè)施的當(dāng)前狀態(tài)
# ipcs -u
Linux上的ipcs命令,不支持UNIX上的-b、-o指令,同樣UNIX中不支持-l、-u指令,所以在編寫跨平臺的腳本時,需要注意這個問題。
相關(guān)文章
完美解決eclipse中導(dǎo)入工程后中文注釋出現(xiàn)亂碼的問題
以下是對eclipse中導(dǎo)入工程后中文注釋出現(xiàn)亂碼的解決辦法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08ubuntu 16.04 下如何設(shè)置root用戶初始密碼
這篇文章主要介紹了ubuntu 16.04 下如何設(shè)置root用戶初始密碼 ,需要的朋友可以參考下2017-06-06FreeBSD6.0Release+Squid+Socks5服務(wù)器架設(shè)筆記
FreeBSD6.0Release+Squid+Socks5服務(wù)器架設(shè)筆記...2007-05-05