bonjour,
j'essai d'ecrire sur un ecran LCD avec un driver de type char.
voici les 3 lignes :
int fd;
fd=open("dev/misc/lcd",O_CREAT,S_IRWXO);
write(fd,"tst",strlen("tst));
la fonction write renvoie l'erreur (Mauvais descripteur de fichier).
Avez vous une solution ?
merci
# Alors, en vrac :
Posté par Obsidian . Évalué à 5.
- O_CREAT ne s'applique pas ici
- tu ne vérifies pas la validité de ton descripteur fd (en gros, tu ne vérifies pas si ton fichier a bien été ouvert).
- Tu n'as probablement pas les droits d'accès sur /dev/misc/lcd
En plus, les droits d'accès spécifiés ne s'appliquent qu'aux "autres". Essaie déja de faire " echo -n "tst" > /dev/misc/lcd " depuis la ligne de commande pour voir si tu parviens à tes fins.
# manque un truc non ?
Posté par TheBreton . Évalué à 2.
fd=open("/dev/misc/lcd",O_CREAT,S_IRWXO);
Ensuite pourquoi ouvrir en execution un driver ?
# re
Posté par LaBienPensanceMaTuer . Évalué à 1.
Tu dis que write t'envoie bouler, mais il est probable que cela vienne d'un echec de l'ouverture.
De plus, tes flags ne sont pas bons pour le open().
En effet, on en crée pas un fichier de périphérique comme un simple fichier (man 2 mknod), donc il faut virer ton O_CREAT.
# resolu
Posté par ivan . Évalué à 1.
il fallait a ecrire
fd=open("/dev/misc/lcd",O_RDWR | O_CREAT,S_IRWXO);
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.