如何将 /proc/sys/fs/mqueue/msgsize_max 增加到 8192 以上?

如何将 /proc/sys/fs/mqueue/msgsize_max 增加到 8192 以上?

是否可以将默认值更改得更大?当我尝试在 C 程序中使用它时,它在大于 8192 的值上失败。

    printf("create queue size: %lu\n", attr->mq_msgsize);
mqd_t mq = mq_open(name, O_CREAT | O_RDWR, 0644, attr);
if (mq == (mqd_t)-1) {
    perror("mq_open error");
    exit(1);
} else {
    printf("mq_open successful\n");
}
//

我将尺寸设置得更大,但程序失败并抛出尺寸错误

答案1

您可以使用命令更改该值sysctl

例如

% cat /proc/sys/fs/mqueue/msgsize_max
8192

% sudo sysctl -w fs.mqueue.msgsize_max=16384
fs.mqueue.msgsize_max = 16384

% cat /proc/sys/fs/mqueue/msgsize_max  
16384

您可以通过添加一行来将其设置为默认值/etc/sysctl.conf

例如

% grep -v '^#' /etc/sysctl.conf               
fs.mqueue.msgsize_max=16384

该条目将在重新启动或运行后生效sudo sysctl -p

相关内容