11

我正在使用 Linux POSIX mqueue 实现,但我遇到了问题。对于当前内核,最大消息大小为 1MB,但我需要没有限制。

man mq_overview表示如果进程是特权进程(具有CAP_SYS_RESOURCE能力的进程),它就没有限制。我认为由 root 执行的进程已经具有特权,但我仍然收到“消息太长”错误(我的消息有 2MB)。

如何CAP_SYS_RESOURCE为流程添加功能?

4

3 回答 3

8

我不知道是否可以将其设置为正在运行的进程(我猜不是),但您可以使用 # setcap 'CAP_SYS_RESOURCE=+ep' /path/to/executable(作为超级用户)将 CAP_SYS_RESOURCE 功能授予可执行文件。在这个例子中,+ep降低到提高CAP_SYS_RESOURCE能力被允许和有效。但是,手册页是获取更多信息capabilities(7)setcap(8)有用来源。

于 2013-03-13T15:52:42.157 回答
3

您可以更改此文件 /proc/sys/fs/mqueue/msgsize_max 上最大消息大小的上限我希望它有效

于 2011-08-05T09:24:39.173 回答
1

尝试函数中的选项 RLIMIT_MSGQUEUE: int setrlimit(int resource, const struct rlimit *rlim);

手册页:http ://www.kernel.org/doc/man-pages/online/pages/man2/setrlimit.2.html

:)

于 2010-09-18T01:11:59.437 回答