消息队列 - 动态消息大小 - C
我对 IPC 消息队列使用静态消息大小:
/* header */
typedef struct{
long type;
char data[BUFFER_SIZE];
}msg;
/* main */
msg m;
msgrcv(queueid, &m, BUFFER_SIZE, 0, 0);
但我需要使用动态数据大小。类似的东西
// header
typedef struct{
long type;
char *data;
}msg;
// main
msg m;
m.data = (char*) malloc( BUFFER_SIZE );
msgrcv(queueid, &m, BUFFER_SIZE, 0, 0);
,但是当我使用它时,它不会从队列中读取任何内容,并且进程被阻止。
感谢您的宝贵时间,并为我糟糕的英语道歉......
I'm using static message size for a IPC message queue:
/* header */
typedef struct{
long type;
char data[BUFFER_SIZE];
}msg;
/* main */
msg m;
msgrcv(queueid, &m, BUFFER_SIZE, 0, 0);
but I need to use dynamic size of data. Something like
// header
typedef struct{
long type;
char *data;
}msg;
// main
msg m;
m.data = (char*) malloc( BUFFER_SIZE );
msgrcv(queueid, &m, BUFFER_SIZE, 0, 0);
But when I use that it doesn't read anything from the queue and the process is blocked.
Thanks for your time, and apologize for my poor english...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
任意长度的消息通过
msgsnd()
和msgrcv()
传递,如下所示:这允许您改变单个消息的 NeededSize。
Arbitrary length messages are passed through
msgsnd()
andmsgrcv()
like this:This allows you to vary what NeededSize is for individual messages.