Linux進程間通信由以下幾部分發展而來:
早期UNIX進程間通信:包括管道、FIFO、信號。
基於System V的進程間通信:包括System V消息隊列、System V信號燈(Semaphore)、System V共享內存。
基於Socket進程間通信。
基於POSIX進程間通信:包括POSIX消息隊列、POSIX信號燈、POSIX共享內存。
Linux中,與IPC相關的命令包括:ipcs、ipcrm(釋放IPC)、
IPCS命令是Linux下顯示進程間通信設施狀態的工具。我們知道,系統進行進程間通信(IPC)的時候,可用的方式包括信號量、共享內存、消息隊列、管道、信號(signal)、套接字等形式[2]。使用IPCS可以查看共享內存、信號量、消息隊列的狀態。
例如在CentOS6.0上執行ipcs
具體的用法總結如下:
1、顯示所有的IPC設施
# ipcs -a
2、顯示所有的消息隊列Message Queue
# ipcs -q
3、顯示所有的信號量
# ipcs -s
4、顯示所有的共享內存
# ipcs -m
5、顯示IPC設施的詳細信息
# ipcs -q -i id
id 對應shmid、semid、msgid等。-q對應設施的類型(隊列),查看信號量詳細情況使用-s,查看共享內存使用-m。
6、顯示IPC設施的限制大小
# ipcs -m -l
-m對應設施類型,可選參數包括-q、-m、-s。
7、顯示IPC設施的許可權關系
# ipcs -c
# ipcs -m -c
# ipcs -q -c
# ipcs -s -c
8、顯示最近訪問過IPC設施的進程ID。
# ipcs -p
# ipcs -m -p
# ipcs -q -p
9、顯示IPC設施的最後操作時間
# ipcs -t
# ipcs -q -t
# ipcs -m -t
# ipcs -s -t
10、顯示IPC設施的當前狀態
# ipcs -u
Linux上的ipcs命令,不支持UNIX上的-b、-o指令,同樣UNIX中不支持-l、-u指令,所以在編寫跨平台的腳本時,需要注意這個問題。