Lorsque je compile mon programme, il n'y a pas de problème, aucune
erreur détectée... par contre quand je lance mon programme, j'ai bien
le résultat de ma requête qui s'affiche mais avec à la fin un 'segment
fault (core dumped)'.
J'ai lu dans plusieurs posts que c'est parce que le programme accède à
une partie de la mémoire qui ne lui est pas autorisé... ok mais que
puis -je faire pour palier à ce problème???
Je teste en fait un programme en C qui puisse se connecter à une base
MySQL.
J'ai récupéré ce code source comme exemple:
http://www.linuxfocus.org/Francais/September2003/mysql_test.c
J'ai modifié juste les paramètres de connexion et tout le reste du
code ne change pas.
Voici le résultat:
[dibzou@localhost dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib
-lz
-L/usr/lib/mysql -lmysqlclient
[dibzou@localhost dibzou]$./test1
Connexion etablie...
Requete : select * from carnet
Resultat de la requete :
toto toto@toto.com
titi titi@titi.com
Segmentation fault (core dumped)
[dibzou@localhost dibzou]$
Si vous pouviez m'aider, ca serait gentil pour que j'avance sous
Linux...
Merci.
Lorsque je compile mon programme, il n'y a pas de problème, aucune
gcc -Wall ?
le résultat de ma requête qui s'affiche mais avec à la fin un 'segment fault (core dumped)'.
man gdb man strace
Si vous pouviez m'aider, ca serait gentil pour que j'avance sous Linux...
crystalball broken.
-- _/°< coin
yves
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du code ne change pas.
Voici le résultat:
[ dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib -lz -L/usr/lib/mysql -lmysqlclient [ dibzou]$./test1 Connexion etablie... Requete : select * from carnet Resultat de la requete : toto titi Segmentation fault (core dumped)
et avec exit(0); c'est pas mieux ?
Merci.
De rien, mais dis nous quand même si c'était ça
Yves
-- http://wiki.rougy.net -- Wiki Unix/Linux
Je teste en fait un programme en C qui puisse se connecter à une base
MySQL.
J'ai récupéré ce code source comme exemple:
http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par
exit(EXIT_SUCCESS);
mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un
exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un
paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du
code ne change pas.
Voici le résultat:
[dibzou@localhost dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib
-lz
-L/usr/lib/mysql -lmysqlclient
[dibzou@localhost dibzou]$./test1
Connexion etablie...
Requete : select * from carnet
Resultat de la requete :
toto toto@toto.com
titi titi@titi.com
Segmentation fault (core dumped)
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du code ne change pas.
Voici le résultat:
[ dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib -lz -L/usr/lib/mysql -lmysqlclient [ dibzou]$./test1 Connexion etablie... Requete : select * from carnet Resultat de la requete : toto titi Segmentation fault (core dumped)
et avec exit(0); c'est pas mieux ?
Merci.
De rien, mais dis nous quand même si c'était ça
Yves
-- http://wiki.rougy.net -- Wiki Unix/Linux
Nicolas George
yves wrote in message <425d5be7$0$14063$:
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;).
Dans tout environnement C qui se respecte, EXIT_SUCCESS est défini par stdlib.h.
et avec exit(0); c'est pas mieux ?
De toutes façons, si EXIT_SUCCESS n'était pas défini, le programme ne compilerait pas, point barre. En aucun cas ça ne peut causer une erreur de segmentation.
yves wrote in message <425d5be7$0$14063$626a14ce@news.free.fr>:
Déjà le programme se termine par
exit(EXIT_SUCCESS);
mais nulle part tu définis EXIT_SUCCESS ;).
Dans tout environnement C qui se respecte, EXIT_SUCCESS est défini par
stdlib.h.
et avec exit(0); c'est pas mieux ?
De toutes façons, si EXIT_SUCCESS n'était pas défini, le programme ne
compilerait pas, point barre. En aucun cas ça ne peut causer une erreur de
segmentation.
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;).
Dans tout environnement C qui se respecte, EXIT_SUCCESS est défini par stdlib.h.
et avec exit(0); c'est pas mieux ?
De toutes façons, si EXIT_SUCCESS n'était pas défini, le programme ne compilerait pas, point barre. En aucun cas ça ne peut causer une erreur de segmentation.
Khanh-Dang
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS
Le fichier mysql_test.c inclut le fichier stdlib.h. Et comme tout stdlib.h standard, j'ai :
Je teste en fait un programme en C qui puisse se connecter à une base
MySQL.
J'ai récupéré ce code source comme exemple:
http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par
exit(EXIT_SUCCESS);
mais nulle part tu définis EXIT_SUCCESS
Le fichier mysql_test.c inclut le fichier stdlib.h. Et comme tout
stdlib.h standard, j'ai :
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS
Le fichier mysql_test.c inclut le fichier stdlib.h. Et comme tout stdlib.h standard, j'ai :
Lorsque je compile mon programme, il n'y a pas de problème, aucune erreur détectée... par contre quand je lance mon programme, j'ai bien le résultat de ma requête qui s'affiche mais avec à la fin un 'segment fault (core dumped)'.
Il te suffit de débugguer ton programme avec un débuggueur. Tu disposes très certainement sur ton système de gdb.
Tu trouveras plus d'informations sur l'utilisation de gdb sur le web.
Lorsque je compile mon programme, il n'y a pas de problème, aucune
erreur détectée... par contre quand je lance mon programme, j'ai bien
le résultat de ma requête qui s'affiche mais avec à la fin un 'segment
fault (core dumped)'.
Il te suffit de débugguer ton programme avec un débuggueur. Tu disposes
très certainement sur ton système de gdb.
Tu trouveras plus d'informations sur l'utilisation de gdb sur le web.
Lorsque je compile mon programme, il n'y a pas de problème, aucune erreur détectée... par contre quand je lance mon programme, j'ai bien le résultat de ma requête qui s'affiche mais avec à la fin un 'segment fault (core dumped)'.
Il te suffit de débugguer ton programme avec un débuggueur. Tu disposes très certainement sur ton système de gdb.
Tu trouveras plus d'informations sur l'utilisation de gdb sur le web.
Eric Stern
dibzou disait:
Bonjour,
Lorsque je compile mon programme, il n'y a pas de problème, aucune erreur détectée... par contre quand je lance mon programme, j'ai bien le résultat de ma requête qui s'affiche mais avec à la fin un 'segment fault (core dumped)'.
je ne connais pas la bibiotheque sql utilisé mais il y a un truc qui me choque.
char *query; et t=mysql_real_query(mysql, query, (unsigned int) strlen(query));
"query" ne doit pas etre initialisé ?
dibzou disait:
Bonjour,
Lorsque je compile mon programme, il n'y a pas de problème, aucune
erreur détectée... par contre quand je lance mon programme, j'ai bien
le résultat de ma requête qui s'affiche mais avec à la fin un 'segment
fault (core dumped)'.
je ne connais pas la bibiotheque sql utilisé mais il y a un truc qui me
choque.
char *query;
et
t=mysql_real_query(mysql, query, (unsigned int) strlen(query));
Lorsque je compile mon programme, il n'y a pas de problème, aucune erreur détectée... par contre quand je lance mon programme, j'ai bien le résultat de ma requête qui s'affiche mais avec à la fin un 'segment fault (core dumped)'.
je ne connais pas la bibiotheque sql utilisé mais il y a un truc qui me choque.
char *query; et t=mysql_real_query(mysql, query, (unsigned int) strlen(query));
"query" ne doit pas etre initialisé ?
dibzou
yves wrote in message news:<425d5be7$0$14063$...
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du code ne change pas.
Voici le résultat:
[ dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib -lz -L/usr/lib/mysql -lmysqlclient [ dibzou]$./test1 Connexion etablie... Requete : select * from carnet Resultat de la requete : toto titi Segmentation fault (core dumped)
et avec exit(0); c'est pas mieux ?
Merci.
De rien, mais dis nous quand même si c'était ça
Yves
Non j'ai toujours le même message d'erreur :(
yves <yrougy@gmail.com> wrote in message news:<425d5be7$0$14063$626a14ce@news.free.fr>...
Je teste en fait un programme en C qui puisse se connecter à une base
MySQL.
J'ai récupéré ce code source comme exemple:
http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par
exit(EXIT_SUCCESS);
mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un
exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un
paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du
code ne change pas.
Voici le résultat:
[dibzou@localhost dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib
-lz
-L/usr/lib/mysql -lmysqlclient
[dibzou@localhost dibzou]$./test1
Connexion etablie...
Requete : select * from carnet
Resultat de la requete :
toto toto@toto.com
titi titi@titi.com
Segmentation fault (core dumped)
Je teste en fait un programme en C qui puisse se connecter à une base MySQL. J'ai récupéré ce code source comme exemple: http://www.linuxfocus.org/Francais/September2003/mysql_test.c
Déjà le programme se termine par exit(EXIT_SUCCESS); mais nulle part tu définis EXIT_SUCCESS ;). Commence déjà par mettre un exit(0); ou un #DEFINE EXIT_SUCESS 0 au début du fichier, mais passe un paramètre correct à exit ;)
J'ai modifié juste les paramètres de connexion et tout le reste du code ne change pas.
Voici le résultat:
[ dibzou]$ gcc -Wall mysql_test.c -o test1 -L/usr/lib -lz -L/usr/lib/mysql -lmysqlclient [ dibzou]$./test1 Connexion etablie... Requete : select * from carnet Resultat de la requete : toto titi Segmentation fault (core dumped)
et avec exit(0); c'est pas mieux ?
Merci.
De rien, mais dis nous quand même si c'était ça
Yves
Non j'ai toujours le même message d'erreur :(
Eric D.
Salut,
dibzou wrote:
J'ai lu dans plusieurs posts que c'est parce que le programme accède à une partie de la mémoire qui ne lui est pas autorisé... ok mais que puis -je faire pour palier à ce problème???
int main(){ <...> char *query; <...> sprintf(query,"select * from %sn", MY_TABLE_NAME);
La variable query n'est pas allouée c'est un simple pointeur non initialisé et donc le sprintf écrase une zone de mémoire ....
essaies :
int main(){ <...> char query [256] ; <...> sprintf(query,"select * from %sn", MY_TABLE_NAME)
ou : int main(){ <...> char *query; <...> query = malloc(256) ; sprintf(query,"select * from %sn", MY_TABLE_NAME);
Ca devrait marcher mieux .... -- Eric
Salut,
dibzou wrote:
J'ai lu dans plusieurs posts que c'est parce que le programme accède à
une partie de la mémoire qui ne lui est pas autorisé... ok mais que
puis -je faire pour palier à ce problème???
int main(){
<...>
char *query;
<...>
sprintf(query,"select * from %sn", MY_TABLE_NAME);
La variable query n'est pas allouée c'est un simple pointeur non initialisé
et donc le sprintf écrase une zone de mémoire ....
essaies :
int main(){
<...>
char query [256] ;
<...>
sprintf(query,"select * from %sn", MY_TABLE_NAME)
ou :
int main(){
<...>
char *query;
<...>
query = malloc(256) ;
sprintf(query,"select * from %sn", MY_TABLE_NAME);
J'ai lu dans plusieurs posts que c'est parce que le programme accède à une partie de la mémoire qui ne lui est pas autorisé... ok mais que puis -je faire pour palier à ce problème???
int main(){ <...> char *query; <...> sprintf(query,"select * from %sn", MY_TABLE_NAME);
La variable query n'est pas allouée c'est un simple pointeur non initialisé et donc le sprintf écrase une zone de mémoire ....
essaies :
int main(){ <...> char query [256] ; <...> sprintf(query,"select * from %sn", MY_TABLE_NAME)
ou : int main(){ <...> char *query; <...> query = malloc(256) ; sprintf(query,"select * from %sn", MY_TABLE_NAME);