如何删除msgget创建的消息队列

时间:2015-06-02 01:59:12

标签: c system-calls

我使用msgget函数创建了消息队列。 下面的代码是它的片段。

key_t msg_queue_key_id = msgget((key_t)MQ_KEY, IPC_CREAT | IPC_EXCL | 0666);
if( msg_queue_key_id == -1 ) {
    char error_log[MAX_LENGTH];
    sprintf(error_log, "failed to create message queue. errno = %d", errno);
    ERROR_LOGGING(error_log)
    return 1;
}

我遇到错误17,因为我已经创建了消息队列。 不幸的是,我找不到如何删除邮件队列。我也看到了mq_unlink函数,但对于这种情况看起来不像。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

使用msgctl(msqid, IPC_RMID, 0)删除使用msgget创建的邮件队列。

答案 1 :(得分:1)

我发现....使用linux命令/* Debug only */ if (!defined('_PS_MODE_DEV_')) define('_PS_MODE_DEV_', true);

ipcrm

我们还可以使用ipcrm -q {{messag_queue_key}}

查看邮件队列列表