2017-08-08 4 views
0

Une file d'attente de messages est implémentée à l'aide de la fonction "mq_open" avec l'autorisation par défaut. Je sais que nous pouvons définir l'autorisation de la file d'attente de messages en utilisant l'argument mode. Mais une fois que nous avons compilé le système est-il possible de changer l'autorisation de la file d'attente de messages (pendant l'exécution) en utilisant une autre commande linux, autre que compiler le binaire à nouveau?Modification de l'autorisation de file d'attente de messages Linux au moment de l'exécution

Répondre

0

envisager d'utiliser ce qui suit:

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

mq_setattr() définit les attributs de la file de messages en utilisant les informations fournies dans la structure de mq_attr pointée par newAttr.

Le seul attribut qui peut être modifié est le paramètre de l'indicateur O_NONBLOCK dans mq_flags.

Les autres champs de newattr sont ignorés. Si le champ oldattr n'est pas NULL, le tampon vers lequel il pointe est utilisé pour renvoyer une structure mq_attr qui contient les mêmes informations que celles renvoyées par mq_getattr().

Malheureusement, vous pouvez voir que c'est plutôt limité.

+0

Fabien .. mon exigence est de changer la permission pendant l'exécution .. sans recompiler l'application en utilisant une API ... – Pra

+0

Je ne pense pas que vous pouvez, comme indiqué par la documentation de l'API. Cependant, ce que vous pouvez faire est de créer différents MQ avec des permissions différentes, et passer de l'un à l'autre en fonction de vos besoins. – Fabien