Bonjour a tous, pour mes cours, je dois coder un shell.
Pour gérer les entrées clavier, j'utilise la bibliothèque termcap. (consigne demandée dans le sujet).
Je pensais que ma fonction qui récupère les caractères entres était bonne, mais visiblement pas a 100%.
Voici ma petite fonction![]()
Mon problème est simple. Cette fonction marche pour l'ensemble des touches du clavier sauf 'maj + k'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int check_key(int func(char key[BUFF_SIZE_READ + 1])) { char buff[BUFF_SIZE_READ + 1]; bzero(buff, sizeof(buff)); if (read(STDIN_FILENO, buff, BUFF_SIZE_READ) <= 0) return (-1); return (func(buff)); }
Ce que je ne comprends pas, c'est que ma fonction ne retourne même pas -1. Le bzero est bien éxécuté, le read aussi et ça s'arrètePK?? lol!
Avez-vous une idée de pourquoi ça fait ça?
PS: BUFF_SIZE_READ = 5
MerciBonne journee
EDIT:
j'ai changé les réglages de mon terminal et ça fonction
Voici mes réglages![]()
Sans ISIG ça ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part term.c_lflag &= ~(ICANON | ECHO | ISIG);![]()
Partager