2017-08-08 51 views
0

消息隊列使用具有默認權限的「mq_open」函數實現。我知道我們可以使用mode參數設置消息隊列的權限。但是一旦我們編譯了系統,除了再次編譯二進制文件之外,是否還有可能使用其他一些linux命令更改消息隊列的權限(在運行時)?在運行時更改Linux消息隊列權限

回答

0

考慮使用以下:

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

mq_setattr()設置消息隊列屬性利用在的mq_attr結構提供的信息所指向的newattr。

唯一可以修改的屬性是mq_flags中O_NONBLOCK標誌的設置。

newattr中的其他字段被忽略。如果oldattr字段不爲NULL,則它指向的緩衝區將用於返回包含與mq_getattr()返回的信息相同的mq_attr結構。

不幸的是,你可以看到它是相當有限的。

+0

Fabien ..我的要求是在運行時更改權限..沒有重新編譯應用程序使用一些API ... – Pra

+0

我不認爲你可以,如API的文檔所述。但是,您可以做的是創建具有不同權限的不同MQ,並根據您的需要從一個切換到另一個。 – Fabien

相關問題