Pseudos-terminaux linux
gégé
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'aurais quelques petites questions sur les pseudo-terminaux svp, observez ceci:
Voici un petit programme en C:
Donc ici vous êtes d'accord que je viens de créer un pty (donc fichier mâitre + fichier esclave), première question: le fichier esclave c'est /dev/pts/2, mais le fichier maitre il est où?
Ensuite, on voit que le fichier esclave a déjà par défaut les droits 0620, d'où ma question: à quoi servent les fonctions grantpt ou unlockpt si tous les droits de l'esclave sont déjà aux bonnes valeurs?
Et finalement, j'aimerais écrire une fonction qui ouvre le pseudo terminal associé au file descriptor fdm, mais sans utiliser ptsname, peut on récupérer le chemin absolu d'un fichier en ayant son file descriptor? Si j'utilise un fstat pour avoir l'inode de fdm et ensuite une structure dirent sur dev/pts et que je compare les inodes rien ne correspond...si quelqu'un a une idée...?
Question subsidiaire: quelle est la syntaxe de la fonction open (en C) pour ouvrir un fichier avec les droits 654 par exemple, j'utilise les flags mais rien ne correspond jamais donc...
Merci.
ls -l /dev/pts total 0 crw--w---- 1 gege tty 136, 0 Feb 20 00:32 0 c--------- 1 root root 5, 2 Feb 19 23:04 ptmx
Voici un petit programme en C:
int main(void) { int fdm; system("ls -l /dev/pts"); fdm = getpt(); printf("file descriptor du maitre %d\n", fdm); system("ls -l /dev/pts"); printf("le pseudo terminal esclave a pour nom %s\n", ptsname(fdm)); return (0); }
./a.out total 0 crw--w---- 1 gege tty 136, 0 Feb 20 00:35 0 crw--w---- 1 gege tty 136, 1 Feb 20 00:35 1 c--------- 1 root root 5, 2 Feb 19 23:04 ptmx file descriptor du maitre 3 total 0 crw--w---- 1 gege tty 136, 0 Feb 20 00:35 0 crw--w---- 1 gege tty 136, 1 Feb 20 00:35 1 crw--w---- 1 gege tty 136, 2 Feb 20 00:35 2 c--------- 1 root root 5, 2 Feb 19 23:04 ptmx le pseudo terminal esclave a pour nom /dev/pts/2
Donc ici vous êtes d'accord que je viens de créer un pty (donc fichier mâitre + fichier esclave), première question: le fichier esclave c'est /dev/pts/2, mais le fichier maitre il est où?
Ensuite, on voit que le fichier esclave a déjà par défaut les droits 0620, d'où ma question: à quoi servent les fonctions grantpt ou unlockpt si tous les droits de l'esclave sont déjà aux bonnes valeurs?
Et finalement, j'aimerais écrire une fonction qui ouvre le pseudo terminal associé au file descriptor fdm, mais sans utiliser ptsname, peut on récupérer le chemin absolu d'un fichier en ayant son file descriptor? Si j'utilise un fstat pour avoir l'inode de fdm et ensuite une structure dirent sur dev/pts et que je compare les inodes rien ne correspond...si quelqu'un a une idée...?
Question subsidiaire: quelle est la syntaxe de la fonction open (en C) pour ouvrir un fichier avec les droits 654 par exemple, j'utilise les flags mais rien ne correspond jamais donc...
Merci.
A voir également:
- Pseudos-terminaux linux
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
- Linux mint 22.1 - Accueil - Linux
2 réponses
Salut
Pour répondre à ta question subsidiaire (la première, je n'en ai aucune idée), ouvrir un fichier en 654, si je ne me trompe pas, c'est permettre au propriétaire de le lire et de l'écrire, au groupe de le lire et de l'exécuter et aux autre de le lire.
Les flags sont donc :
Regarde cette manpage qui explique chaque flags de fopen :
https://man7.org/linux/man-pages/man2/open.2.html
Pour répondre à ta question subsidiaire (la première, je n'en ai aucune idée), ouvrir un fichier en 654, si je ne me trompe pas, c'est permettre au propriétaire de le lire et de l'écrire, au groupe de le lire et de l'exécuter et aux autre de le lire.
Les flags sont donc :
S_IRUSR | S_IWUSR | S_IRGRP | S_IXGRP | S_IROTH
Regarde cette manpage qui explique chaque flags de fopen :
https://man7.org/linux/man-pages/man2/open.2.html