/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

관련 정보