【问题标题】:Change Linux message queue permission at run-time在运行时更改 Linux 消息队列权限
【发布时间】:2018-01-16 05:55:38
【问题描述】:

消息队列是使用“mq_open”函数实现的,具有默认权限。我知道我们可以使用 mode 参数设置消息队列的权限。但是一旦我们编译了系统,除了再次编译二进制文件之外,是否有可能使用其他一些 linux 命令(在运行时)更改消息队列的权限?

【问题讨论】:

    标签: linux permissions runtime message-queue


    【解决方案1】:

    考虑使用以下方法:

       int mq_setattr(mqd_t mqdes, struct mq_attr *newattr,
                        struct mq_attr *oldattr);
    

    mq_setattr() 使用 newattr 指向的 mq_attr 结构中提供的信息设置消息队列属性。

    唯一可以修改的属性是mq_flags中O_NONBLOCK标志的设置。

    newattr 中的其他字段被忽略。如果 oldattr 字段不为 NULL,则它指向的缓冲区用于返回一个 mq_attr 结构,该结构包含与 mq_getattr() 返回的信息相同的信息。

    不幸的是,您可以看到它相当有限。

    【讨论】:

    • Fabien .. 我的要求是在运行时更改权限.. 无需使用某些 API 重新编译应用程序 ...
    • 我不认为你可以,如 API 文档所述。但是,您可以做的是创建具有不同权限的不同 MQ,并根据需要从一个切换到另一个。
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 2019-03-17
    • 2010-11-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2013-08-02
    相关资源
    最近更新 更多