【问题标题】:How to solve "msgget: No space left on device" error?如何解决“msgget:设备上没有剩余空间”错误?
【发布时间】:2010-12-05 22:39:43
【问题描述】:

我正在使用消息队列编写 IPC 应用程序。使用 msgget() 函数获取消息队列时出现此错误。

请求的操作不需要设备上的大量空间,也应该有剩余空间。

任何想法。提前谢谢你

【问题讨论】:

    标签: c ipc message-queue


    【解决方案1】:

    msgget中的ENOSPC表示已达到系统范围的最大消息队列数。

    您可以配置此限制 - 例如在 Linux 中您可以调整 /proc/sys/kernel/msgmni

    【讨论】:

    • 我不这么认为,这是一个管理设置的资源限制。 echo "Please increase number of message queues." | mail root@localhost 可能是你能做的最好的了;)
    • @Alex - 如果您的机器根本没有配置为支持消息队列,或者没有足够的消息队列,则必须有人重新配置它。该人将需要 root 权限。如果不是您,请与管理员联系。或者使用msgget()以外的其他东西。
    • 谢谢大家!我获得了 root 访问权限并编辑了 /proc/sys/kernel/msgmni。
    • 请注意,通过 /proc/ 对 sysctls 所做的更改不会在重新启动后继续存在 - 要使其永久生效,请在 /etc/sysctl.conf 中添加一行,例如 kernel.msgmni = 2000
    猜你喜欢
    • 2012-03-08
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2017-05-06
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多