我正在使用 Linux POSIX mqueue 实现,但我遇到了问题。对于当前内核,最大消息大小为 1MB,但我需要没有限制。
man mq_overview
表示如果进程是特权进程(具有CAP_SYS_RESOURCE
能力的进程),它就没有限制。我认为由 root 执行的进程已经具有特权,但我仍然收到“消息太长”错误(我的消息有 2MB)。
如何CAP_SYS_RESOURCE
为流程添加功能?
我正在使用 Linux POSIX mqueue 实现,但我遇到了问题。对于当前内核,最大消息大小为 1MB,但我需要没有限制。
man mq_overview
表示如果进程是特权进程(具有CAP_SYS_RESOURCE
能力的进程),它就没有限制。我认为由 root 执行的进程已经具有特权,但我仍然收到“消息太长”错误(我的消息有 2MB)。
如何CAP_SYS_RESOURCE
为流程添加功能?
我不知道是否可以将其设置为正在运行的进程(我猜不是),但您可以使用 # setcap 'CAP_SYS_RESOURCE=+ep' /path/to/executable
(作为超级用户)将 CAP_SYS_RESOURCE 功能授予可执行文件。在这个例子中,+ep
降低到提高CAP_SYS_RESOURCE
能力被允许和有效。但是,手册页是获取更多信息capabilities(7)
的setcap(8)
有用来源。
您可以更改此文件 /proc/sys/fs/mqueue/msgsize_max 上最大消息大小的上限我希望它有效
尝试函数中的选项 RLIMIT_MSGQUEUE: int setrlimit(int resource, const struct rlimit *rlim);
手册页:http ://www.kernel.org/doc/man-pages/online/pages/man2/setrlimit.2.html
:)