日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux进程间通信-XSI IPC

發布時間:2023/11/27 生活经验 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux进程间通信-XSI IPC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 什么是XSI IPC

有三種 IPC我們稱作XSI IPC,即消息隊列、信號量以及共享存儲器(共享內存),它們之間有很多相似之處。

二 標識符和鍵

? ??每個內核中的 IPC結構(消息隊列、信號量或共享內存)都用一個非負整數的標識符加以引用。 無論何時創建IPC結構(調用 msgget、semget 或shmget),都應指定一個關鍵字(key),關鍵字的數據類型由系統規定為 key_t,通常在頭文件<sys/types.h>中被規定為長整型。關鍵字由內核變換成標識符。 key的取法有兩種:ftok和IPC_PRIVATE,(網上看到的)

三 兩個進程(服務和客戶)使用同一個IPC結構的方法

(1) 服務器進程可以指定鍵IPC_PRIVATE創建一個新的IPC結構,將返回的標識符存放在某處(如一個文件)以便和客戶進程取用。也可用父子進程的方式傳遞。 (2) 在一個公用頭文件 中定義 一個客戶進程和服務器進程都認可的鍵。然后服務器進程指定此鍵創建一個新的IPC結構。 (3) 客戶進程和服務器進程認同一個路徑和項目ID(項目ID是0~255間的字符值),接著調用函數ftok將這兩個值變換一個鍵。然后在方法(2)中使用此鍵。 #inlcude <sys/ipc.h> key_t ftok(const char *path, int id); path 參數必須引用一個現存文件,當產鍵時,保使用id參數的低8位。如果使用同一項目ID,那么對于不同文件 的兩個路徑可能產相同的鍵。

四 權限結構

XSI IPC為每一個IPC結構設置了一個 ipc _ perm結構。該結構規定了許可權和所有者。主要成員有: struct ipc_perm { uid_t uid ; /* owner's effective user id */ gid_t gid ; /* owner's effective group id */ uid_t cuid; /* creator's effective user id */ gid_t cgid ; /* creator's effective group id */ mode_t mode; /* access modes */ ulong seq ; /* slot usage sequence number */ key_t key; /* key */ } 詳細的見<sys/ipc.h>在linux的源碼中可以找到。 在創建IPC結構時,對所有字段都賦初值。以后,可以調用msgctl、semctl或shmctl修改uid、gid和mode字段。為了改變這些值,調用進程必須是IPC結構的創建者或超級用戶。 ? 五 Linux中,與IPC相關的命令包括:ipcs、ipcrm(釋放IPC)

IPCS命令是Linux下顯示進程間通信設施狀態的工具。我們知道,系統進行進程間通信(IPC)的時候,可用的方式包括信號量、共享內存、消息隊列、管道、信號(signal)、套接字等形式。使用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指令,所以在編寫跨平臺的腳本時,需要注意這個問題。

轉載于:https://www.cnblogs.com/fangshenghui/p/4039784.html

總結

以上是生活随笔為你收集整理的linux进程间通信-XSI IPC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。