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
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));
}
Mon problème est simple. Cette fonction marche pour l'ensemble des touches du clavier sauf 'maj + k'

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ète PK?? lol!

Avez-vous une idée de pourquoi ça fait ça?

PS: BUFF_SIZE_READ = 5

Merci Bonne journee

EDIT:

j'ai changé les réglages de mon terminal et ça fonction

Voici mes réglages

Code : Sélectionner tout - Visualiser dans une fenêtre à part
term.c_lflag &= ~(ICANON | ECHO | ISIG);
Sans ISIG ça ne fonctionne pas