Bonjour,
Je suis néophyte sous Linux. Je m'en sers courament mais ne développe que depuis peu avec. J'aurais voulu faire beeper le haut-parleur de mon PC avec une procédure C. J'ai vu qu'on utilisait sous linux qq chose comme
Je sais que je ne suis pas sur un forum C mais le choix du forum Linux est justifié : la procédure ci-dessus fonctionne en mode root mais ne produit aucun son en mode user. Si j'ai bien compris, l'explication en serait que le noeud tty est pour tous les utilisateurs autres que root en ReadOnly ... C'est donc cette caractéristique propre à Linux que j'aimerais "contourner". A lire divers forums, il semblerait que faire beeper son PC en mode simple user, et ceci indépendamment de la distribution choisie (kernel 2.6), impose des "contorsions", des adaptations particulières adaptées à chaque distribution, des solutions "maison"... Est-ce le cas ?
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 /*beep.c*/ #include <stdlib.h> #include <sys/types.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/kd.h> int main(int argc, char *argv[]) { int fd, time, freq, arg; fd = open("/dev/tty0", O_RDONLY); if (argc > 2) { freq = atoi(argv[1]); time = atoi(argv[2]); } else { freq = 400; /* frequency in Hz */ time = 100; /* time in millisec */ } arg = (time<<16)+(1193180/freq); return ioctl(fd,KDMKTONE,arg); }
Windowsien, je m'initie sous Ubuntu pour me faire une idée (en Pascal et en C++). Quelque soit l'OS utilisé, j'imagine mal les utilisateurs devoir régler leur station de travail pour entendre le beep d'erreur ou de fin de travail d'une procédure du logiciel. Même si je suis séduit par Linux, je ne m'attendais pas à rencontrer un tel problème de programmation.
En réalité le problème n'est pas crucial mais sa méthode de résolution (ou non) m'en apprendra certainement beaucoup sur le monde linux et ses pratiques.
Mais je n'en suis pas là. Commençons par le début : Qq'1 pourrait-il me donner un début de piste ?
Merci d'avance. Cordialement. Gilles
Partager