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);
}