ftok
FUNCTION
系統(tǒng)建立IPC通訊(如消息隊(duì)列昆著、共享內(nèi)存時(shí))必須指定一個(gè)ID值诫欠。通常情況下潦刃,該id值通過ftok函數(shù)得到变隔。
**USAGE **
key_t ftok( char * fname, int id )
PARAMETER
@fname 文件路徑名稱
fname就時(shí)你指定的文件名(該文件必須是存在而且可以訪問的)
@id
id是子序號(hào),****雖然為int茵宪,但是只有8個(gè)比特被使用(0-255)
RETURN
key_t : 將文件的索引節(jié)點(diǎn)號(hào)取出最冰,前面加上子序號(hào)得到key_t的返回值。如指定文件的索引節(jié)點(diǎn)號(hào)為65538稀火,換算成16進(jìn)制為 0x010002暖哨,而你指定的ID值為38,換算成16進(jìn)制為0x26凰狞,則最后的key_t返回值為0x26010002篇裁。
NOTE
查詢文件索引節(jié)點(diǎn)號(hào)的方法是
ls -i
ftok的第一個(gè)參數(shù)是一個(gè)文件的路徑名稱.一般在應(yīng)用系統(tǒng)中,使用$HOME或者應(yīng)用系統(tǒng)的根目錄作為它的值.這樣產(chǎn)生的key_t就不會(huì)與系統(tǒng)中其他的軟件和系統(tǒng)的相同了,從而避免造成沖突. (當(dāng)以文件為第一個(gè)參數(shù)時(shí),如果文件的大小發(fā)生變化赡若,生成的Key也會(huì)響應(yīng)變化达布,應(yīng)注意 )
shmget
???
fgets
FUNCTION
**USAGE **
PARAMETER
msgget
FUNCTION
msgget [message get] | [創(chuàng)建一個(gè)消息隊(duì)列]
**USAGE **
int msgget(key_t key, int msgflg);
PARAMETER
@key : key ??key_t
@msgflg :message flag
msgsnd
FUNCTION
msgsnd [message sender] |消息隊(duì)列發(fā)送
**USAGE **
int msgsnd(int msqid, const void *msgp, size_t msgsz,int msgflg);
PARAMETER
@msqid : message quenue id
@msgp : message pointer
@msgsz : message size
@msgflg : message flag
msgrcv
**FUNCTION **
msgrcv [message receiver] |消息隊(duì)列接收
**USAGE **
int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
PARAMETER
@msqid : message quenue id
@msgp : message pointer
@msgsz : message size
@msgtyp : message type
@msgflg : message flag
msgctl
msgctl = message control 根據(jù)cmd的不同 執(zhí)行不同的指令
FUNCTION
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
@msgctl :message queue id
@cmd :command
@buf : buffer
**USAGE **
,msgctl系統(tǒng)調(diào)用對msqid標(biāo)識(shí)的消息隊(duì)列執(zhí)行cmd操作列
PARAMETER
cmd
IPC_STAT
讀取消息隊(duì)列的數(shù)據(jù)結(jié)構(gòu)msqid_ds,并將其存儲(chǔ)在b u f指定的地址中逾冬。
IPC_SET
設(shè)置消息隊(duì)列的數(shù)據(jù)結(jié)構(gòu)msqid_ds中的ipc_perm元素的值黍聂。這個(gè)值取自buf參數(shù)躺苦。
IPC_RMID
從系統(tǒng)內(nèi)核中移走消息隊(duì)列。