gcc 4.72 c89
我正在使用本書作爲參考來做mq_ * posix消息隊列。明確關閉消息隊列的最佳實踐
The Linux Programming Interface by Michael Kerrisk page 1071
但是,在這個例子中,我已經注意到他們打開一個消息隊列從隊列中獲取一些屬性。但是,他們沒有把它關閉。
這不是一個不好的做法,因爲可能會發生資源泄漏,因爲如果所有消息隊列描述符都沒有返回到操作系統,它們可能會用完。我猜如果自動將所有資源返回到操作系統,進程將會死亡。但是,如果一個進程在服務器上24/7運行,那麼這可能會產生重大影響。
非常感謝您的任何建議,
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);
}