gpt4 book ai didi

linux - mq_open 错误 : invalid argument

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:44 29 4
gpt4 key购买 nike

谁能帮我指出我代码中的错误在哪里?
提前谢谢你。

这是我的代码。我删除了下面代码中的头文件。当我运行这些代码时,我总是收到

:mq_open:invalid argument

#define FILE_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH
struct mq_attr attr;
int main (int argc,char **argv)
{
int c;
int flags;
mqd_t mqd;

flags = O_RDWR|O_CREAT;

while ( (c = getopt (argc,argv,"em:z:")) != -1) {
switch (c) {
case 'e':
flags |= O_EXCL;
continue;

case 'm':
attr.mq_maxmsg = atol (optarg);
break;

case 'z':
attr.mq_msgsize = atol (optarg);
break;
}
}

if (optind != argc - 1) {
printf ("usage:mqcreate [-e] [-m maxseg -z msgsize] <name>\n");
exit (1);
}

if ((attr.mq_maxmsg != 0 && attr.mq_msgsize == 0) ||
(attr.mq_maxmsg == 0 && attr.mq_msgsize != 0))
{
printf ("must specify both -m maxmsg and -z msgsize\n");
exit (1);
}

if (attr.mq_msgsize == 0 && attr.mq_maxmsg == 0)
{
attr.mq_msgsize = 10;
attr.mq_maxmsg = 10;
}


mqd = mq_open (argv[optind],flags,FILE_MODE,&attr);
if (mqd == -1) {
perror ("mq_open");
exit (1);
}

mq_close (mqd);

return 0;
}

我在 stackoverflow 上搜索了这个问题,但没有任何帮助。
谢谢。

最佳答案

./foobar 不是 mq 名称的有效值。 mq_overview man page :

Each message queue is identified by a name of the form /somename; that is, a null-terminated string of up to NAME_MAX (i.e., 255) characters consisting of an initial slash, followed by one or more characters, none of which are slashes.

因此运行名称为 /foobar 而不是 ./foobar 的程序。

关于linux - mq_open 错误 : invalid argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564700/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com