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