所需头文件 | #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> | |
函数原型 | int msgget(key_t key, int msgflg) | |
函数传入值 | key:消息队列的键值,多个进程可以通过它访问同一个消息队列,其中有个特殊值IPC_PRIVATE。它用于创建当前进程的私有消息队列 | |
msgflg:权限标志位 | ||
函数返回值 | 成功:消息队列ID | |
出错:-1 |
所需头文件 | #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> | |
函数原型 | int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg) | |
函数传入值 | msqid:消息队列的队列ID | |
msgp:指向消息结构的指针。该消息结构msgbuf通常为: struct msgbuf { long mtype; /* 消息类型,该结构必须从这个域开始 */ char mtext[1]; /* 消息正文 */ } | ||
msgsz:消息正文的字节数(不包括消息类型指针变量) | ||
msgflg: | IPC_NOWAIT若消息无法立即发送(比如:当前消息队列已满),函数会立即返回 | |
0:msgsnd调阻塞直到发送成功为止 | ||
函数返回值 | 成功:0 | |
出错:-1 |
所需头文件 | #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> | |||
函数原型 | int msgrcv(int msgid, void *msgp, size_t msgsz, long int msgtyp, int msgflg) | |||
函数传入值 | msqid:消息队列的队列ID | |||
msgp:消息缓冲区, 同于msgsnd()函数的msgp | ||||
msgsz:消息正文的字节数(不包括消息类型指针变量) | ||||
msgtyp: | 0:接收消息队列中第一个消息 | |||
大于0:接收消息队列中第一个类型为msgtyp的消息 | ||||
小于0:接收消息队列中第一个类型值不小于msgtyp绝对值且类型值又最小的消息 | ||||
函数传入值 | msgflg: | MSG_NOERROR:若返回的消息比msgsz字节多,则消息就会截短到msgsz字节,且不通知消息发送进程 | ||
IPC_NOWAIT若在消息队列中并没有相应类型的消息可以接收,则函数立即返回 | ||||
0:msgsnd()调用阻塞直到接收一条相应类型的消息为止 | ||||
函数返回值 | 成功:0 | |||
出错:-1 |
所需头文件 | #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> | |
函数原型 | int msgctl (int msgqid, int cmd, struct msqid_ds *buf ) | |
函数传入值 | msqid:消息队列的队列ID | |
cmd: 命令参数 | IPC_STAT:读取消息队列的数据结构msqid_ds,并将其存储在buf指定的地址中 | |
IPC_SET:设置消息队列的数据结构msqid_ds中的ipc_perm域(IPC操作权限描述结构)值。这个值取自buf参数 | ||
IPC_RMID:从系统内核中删除消息队列 | ||
buf:描述消息队列的msgqid_ds结构类型变量 | ||
函数返回值 | 成功:0 | |
出错:-1 |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |