iotcl: operation non permise
Bonjour,
A l'intérieur d'une application complexe de LINUX RHES 5, j'ai écrit un petit module beeper classique pour activer / désactiver le son avec le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
int frequency, console_fd ;
if((console_fd = open("/dev/console", O_WRONLY)) == -1) {
perror("open");
return;
}
else
{
frequency = 6000;
if (ioctl(console_fd, KIOCSOUND, frequency) == -1)
perror("ioctl");
} |
Ce module fonctionne parfaitement quand j'exécute mon application en "su". Par contre, il sort un message d'erreur "ioctl: Opération non permise" quand l'application est activée avec un utilisateur sans privilège particulier. Or cela est une exigence.
J'aimerais savoir si quelqu'un parmi vous a une solution pour que ce module soit exécuté sans erreur par un utilisateur courant.
Mes recherches ont été vaines sur le net: la solution de contournement (chown root myappli; chmod a+s myappli) ne marche pas car d'autres contrôles d'identification de l'application l'arrêtent quand l'application n'est pas exécutée par le bon destinataire.
Merci à l'avance et cordialement.
XBell à la place de ioctl (Suite) ?
Bonsoir,
J'ai déjà essayé XBell / XKeyboardControl ... Mais cette solution ne me convient pas a priori. La durée du beeper peut être très longue (quelques heures ...) selon mes besoins. Or selon mes tests, quand je met bell_duration à quelques minutes, XServer sort déjà des erreurs de paramétrage. De plus, je pense que cette solution consomme beaucoup plus de ressources de machine que ioctl.
Merci à l'avance.