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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.