ftok
FUNCTION
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
进程间通信:比较脸熟的ftok()
**USAGE **
key_t ftok( char * fname, int id )
PARAMETER
@fname 文件路径名称
fname就时你指定的文件名(该文件必须是存在而且可以访问的)
@id
id是子序号,****虽然为int,但是只有8个比特被使用(0-255)
RETURN
key_t : 将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进制为 0x010002,而你指定的ID值为38,换算成16进制为0x26,则最后的key_t返回值为0x26010002。
NOTE
查询文件索引节点号的方法是
ls -i
ftok的第一个参数是一个文件的路径名称.一般在应用系统中,使用$HOME或者应用系统的根目录作为它的值.这样产生的key_t就不会与系统中其他的软件和系统的相同了,从而避免造成冲突. (当以文件为第一个参数时,如果文件的大小发生变化,生成的Key也会响应变化,应注意 )
shmget
???
fgets
FUNCTION
**USAGE **
PARAMETER
msgget
FUNCTION
msgget [message get] | [创建一个消息队列]
**USAGE **
int msgget(key_t key, int msgflg);
PARAMETER
@key : key ??key_t
@msgflg :message flag
msgsnd
FUNCTION
msgsnd [message sender] |消息队列发送
**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] |消息队列接收
**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 根据cmd的不同 执行不同的指令
FUNCTION
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
@msgctl :message queue id
@cmd :command
@buf : buffer
**USAGE **
,msgctl系统调用对msqid标识的消息队列执行cmd操作列
PARAMETER
cmd
IPC_STAT
读取消息队列的数据结构msqid_ds,并将其存储在b u f指定的地址中。
IPC_SET
设置消息队列的数据结构msqid_ds中的ipc_perm元素的值。这个值取自buf参数。
IPC_RMID
从系统内核中移走消息队列。
msgctl 函数介绍