/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

関連情報