gcc 4.72 c89
mq_* posix メッセージ キューを実行するためのリファレンスとしてこの本を使用しています。
The Linux Programming Interface by Michael Kerrisk page 1071
ただし、このスニペットの例では、メッセージ キューを開き、キューからいくつかの属性を取得していることに気付きました。しかし、彼らはそれを閉じることができませんでした。
OS に返されない場合、すべてのメッセージ キュー記述子が使い果たされる可能性があるため、リソース リークが発生する可能性があるため、これは悪い習慣ではありませんか? プロセスが終了すると、すべてのリソースが自動的に OS に返されると思います。ただし、プロセスがサーバー上で 24 時間年中無休で実行されている場合、これは大きな影響を与える可能性があります。
ご提案いただきありがとうございます。
int main(int argc, char *argv[])
{
mqd_t mqd;
struct mq_attr attr;
if (argc != 2 || strcmp(argv[1], "--help") == 0)
usageErr("%s mq-name\n", argv[0]);
mqd = mq_open(argv[1], O_RDONLY);
if (mqd == (mqd_t) -1)
errExit("mq_open");
if (mq_getattr(mqd, &attr) == -1)
errExit("mq_getattr");
printf("Maximum # of messages on queue: %ld\n", attr.mq_maxmsg);
printf("Maximum message size: %ld\n", attr.mq_msgsize);
printf("# of messages currently on queue: %ld\n", attr.mq_curmsgs);
exit(EXIT_SUCCESS);
}