我正在使用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