#include <stdio.h> #include <stdlib.h> #include <sys/ipc.h> #include <sys/msg.h> #define BUF_SIZE 256 #define PROJ_ID 32 #define PATH_NAME "." int main(void) { /*用户自定义消息缓冲*/ struct mymsgbuf { long msgtype; char ctrlstring[BUF_SIZE]; } msgbuffer; int qid; /*消息队列标识符*/ int msglen; key_t msgkey; /*获取键值*/ if((msgkey = ftok (PATH_NAME, PROJ_ID)) == -1) { perror ("ftok error!\n"); exit (1); } /*创建消息队列*/ if((qid = msgget (msgkey, IPC_CREAT|0660)) == -1) { perror ("msgget error!\n"); exit (1); } /*填充消息结构,发送到消息队列*/ msgbuffer. msgtype = 3; strcpy (msgbuffer.ctrlstring , "Hello,message queue"); msglen = sizeof(msgbuffer) - 4; if(msgsnd (qid, &msgbuffer, msglen, 0) == -1) { perror ("msgget error!\n"); exit (1); } exit(0); }fe
时间: 2023-06-25 16:02:22 浏览: 192
C标准库函数集
5星 · 资源好评率100%
这是一个使用 System V 消息队列的示例程序,它实现了向消息队列中发送一条消息的功能。具体来说,程序创建了一个消息队列,并且填充了一个结构体 mymsgbuf,然后通过 msgsnd 函数将这个结构体发送到消息队列中。在此过程中,msgtype 表示消息类型,ctrlstring 表示消息内容,msglen 表示消息长度。如果发送成功,则程序退出并返回 0。否则,程序打印错误信息并退出。
阅读全文