【问题标题】:msgsnd: Invalid argumentmsgsnd:无效参数
【发布时间】:2011-02-21 18:21:56
【问题描述】:

我在使用我的程序时收到 msgsnd: Invalid argument 错误。我注意到的另一件事是错误确实 如果文件大小中等,则不会发生,而文件大小稍大时会发生。是不是因为内存溢出?如果是,那么解决方案是什么。 问候, 巴文。

【问题讨论】:

  • 更具体地说,程序成功的文件大小是 152K 和 75K,它给出 msgsnd 的文件大小:无效参数错误是 336K、404K、396K。

标签: c multithreading message-queue


【解决方案1】:

如果msgsz 参数大于MSGMAX(通常是一个很小的值,例如8192),则msgsnd() 返回EINVAL

你用的是什么msgsz

【讨论】:

  • 谢谢咖啡馆。我发现我正在使用的 pkt 的大小几乎是 12000。这是导致我 prblm 的 pkt 的大小。我们可以改变 MSGMAX 的值吗?问候,Bhavin。
  • 这取决于操作系统。在 Linux 上,可以使用kernel.msgmax sysctl(可通过/proc/sys/kernel/msgmax 访问)在系统范围内更改它。
  • 感谢 caf 我通过在 /etc/sysctl.conf 文件中显式使用该参数并使用 sysctl -p 对其进行了更改。再次感谢caf的回复。问候,巴文
猜你喜欢
  • 2017-08-25
  • 2011-07-10
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多