Probleme louche [C/UNIX] - Programmation
Marsh Posté le 01-03-2002 à 15:29:47
puts marche avec des streams si j'ai bon souvenir donc fait un flush à la fin
sinon, fait plutot des writes pour ce genre de debug, au moins tu est sûr que si rien n'est affiché, c'est qu'il n'est pas arrivé au write
Marsh Posté le 01-03-2002 à 15:33:46
je viens de faire un my_puts, ca change rien :
void my_puts(char *chaine)
{
write(1, chaine, strlen(chaine));
}
Marsh Posté le 01-03-2002 à 15:57:50
elle est dans quel .h ta structure head? (j'ai le flemme de chercher)
sinon, tu es sûr de la validité du fichier que tu ouvres?
PS: le exit code 0 signifie que ton programme s'est terminé normalement donc je pense qu'un exit(1) serait plus juste (je sais ça ne résoud pas ton problème)
PPS: utilises gdb (ou ddd si tu veux du mode graphique)
Marsh Posté le 01-03-2002 à 17:00:26
Manegarm a écrit a écrit : Voila mon bout de code : int main(int argc, char **argv) { int fd; int val; struct exec head; if (argc < 2) exit(0); if ((fd = open(argv[1], O_RDONLY) == -1)) exit(0); puts ("avant" ); if ((val = read(fd, &head, sizeof(head))) == -1) exit(0); puts ("apres" ); } Il reste bloque et n'affiche ajmais le "apres". Help |
Ca a peut-être rien à voir mais y'aurait pas comme un pb de parenthèse ?!
Sinon ça peut venir de ton open et/ou ton read qui sont bloquant ET qui son bloqués qqpart
Autre chose, dans tes if il me semble que tu test pas le bon truc. Tel que c'est fait là tu la véracité du = et non pas la valeur de retour de tes fonctions. Fait plutôt comme ça :
if (read(fd, &head, sizeof(head) == -1)
exit(0);
[jfdsdjhfuetppo]--Message édité par cycojesus--[/jfdsdjhfuetppo]
Marsh Posté le 01-03-2002 à 18:12:51
j'ai peut etre pas tout suivi mais pourkoi tu fais po un printf plutot kun puts???
si tu fais un printf("apres\n" );
ya des chances pourkil l'affiche ton "apres" et ke tu te rende compte ke l'erreur vienne dot part.....
Marsh Posté le 01-03-2002 à 21:24:38
Dj_jim a écrit a écrit : j'ai peut etre pas tout suivi mais pourkoi tu fais po un printf plutot kun puts??? si tu fais un printf("apres\n" ); ya des chances pourkil l'affiche ton "apres" et ke tu te rende compte ke l'erreur vienne dot part..... |
printf ou puts, il faut mettre un fflush(stdout) pour être sûr que ce soit affiché.
Marsh Posté le 02-03-2002 à 13:26:05
Jar Jar a écrit a écrit : printf ou puts, il faut mettre un fflush(stdout) pour être sûr que ce soit affiché. |
non non des fois les \n a la fin d'un chaine de caracteres forcent l'affichage.
Marsh Posté le 01-03-2002 à 15:20:17
Voila mon bout de code :
int main(int argc, char **argv)
{
int fd;
int val;
struct exec head;
if (argc < 2)
exit(0);
if ((fd = open(argv[1], O_RDONLY) == -1))
exit(0);
puts ("avant" );
if ((val = read(fd, &head, sizeof(head))) == -1)
exit(0);
puts ("apres" );
}
Il reste bloque et n'affiche ajmais le "apres".
Help