Bonjour.
Je cherche à être super utilisateur dans un programme en C++, je dois accéder aux port parallèles du PC.
J'ai donc mis ; setuid (0) dans le main, pour pouvoir obtenir une autorisation : ioperm(0x300,3,1).
Cependant cela ne passe pas.
Apparemment c'est un problème de montage de disque, la partie du disque ou est placé mon compilateur QT, et g++ interdit les exécution setuid .
Je suis sous Kubuntu.
Comment faire pour pouvoir compiler directement avec QT et g++, en exécutant des fonctions : " setuid " ?
Voici le main :
Merci.
Code : 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 setuid (0); ioperm(0x300,3,1); /* Obtention de l'accès aux ports */ if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);} /* Initialisation de tous les signaux de données (D0-D7) à l'état bas (0) */ outb(0, BASEPORT); /* Dormons pendant un moment (100 ms) */ usleep(100000); /* Lecture sur le port d'état (BASE+1) et affichage du résultat */ cout << inb(BASEPORT + 1); cout << endl; /* Nous n'avons plus besoin de l'accès aux ports */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}
Partager