Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
677 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Segmentation fault et make pointer from interger without a cast

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Segmentation fault et make pointer from interger without a cast

n°1730535
djaibi86
Posté le 10-05-2008 à 19:45:54  profilanswer
 

Bonjour à vous,  
 
Alors voilà j'ai un Segmentation Fault qui résulte surement du Warning. Sachant que j'ai fait un programme avec Module, donc voilà le main dans un fichier servConf.c, je n'ai rien mis dans le servConf.h.
 
 
 

Code :
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "../Socket/libsck.h"
  8. int main(int argc,char *argv[])
  9. {
  10. int sock_lecture;   /* Descripteur de la SOCKET */
  11. short int port=40;
  12. sock_lecture=initialisationServeur(&port);
  13. }


 
Ensuite dans un fichier libsck.c :
 

Code :
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <arpa/inet.h>
  8. #include <netdb.h>
  9. #include <pthread.h>
  10. #define MAX_CONNEXIONS 25
  11. int initialisationServeur(short int *port)
  12. {
  13. int df=0;
  14. struct sockaddr_in adresse;
  15. int statut;
  16. socklen_t taille=sizeof adresse;
  17. // Creation d'une socket  
  18. df=socket(PF_INET,SOCK_STREAM,0);
  19. if(df<0){
  20.         perror("initialisationServeur.socket" );
  21.         exit(1);
  22.         }
  23. // On fixe l'adresse de la socket  
  24. adresse.sin_family=AF_INET;
  25. adresse.sin_addr.s_addr=INADDR_ANY;
  26. adresse.sin_port=htons(*port);
  27. statut=bind(df,(struct sockaddr *)&adresse,sizeof(adresse));
  28. if(statut<0) return -1;
  29. printf ("adresse fixé \n" );
  30. // On recupere le numero du port utilise
  31. statut=getsockname(df,(struct sockaddr *)&adresse,&taille);
  32. if(statut<0){
  33.         perror("initialisationServeur.getsockname" );
  34.         }
  35. *port=ntohs(adresse.sin_port);
  36. printf ("recup num \n" );
  37. // Initialisation de l'ecoute
  38. statut=listen(df,MAX_CONNEXIONS);
  39. if(statut<0) return -1;
  40. printf ("init ecoute ok\n" );
  41. return df;
  42. }


 
Dans le fichier libsck.h j'ai :  
 

Code :
  1. int initialisationServeur(short int*);


 
Voilà c'est tout, pour la compilation je crée un fichier libsck.a, et ensuite je fais un gcc -o rapido servConf.o ../Socket/libsck.a (tout les fichier sont existants ect)  
 
Au final j'ai un warning :  makes integer from pointer without a cast (qui apparait dans le main à la ligne ou il y'a  sock_lecture=initialisationServeur(&port);)
 
Et j'ai un segmenation fault dans l'initialisationServeur (quand je met toute les lignes qui utilise port en commentaire le segmentation fault disparait), je suppose que ça vient de là mais je ne comprend pas du tout ...  
 
Bref si quelqu'un sait, je ne suis pas contre un peu d'aide.
 
Ps : il y'a surement plein d'include qui ne servent à rien, mais en gros j'ai un programme bien plus compliqué que j'ai simplifié au maximum pour essayer de retrouvé l'erreur et il me semble l'avoir localisé à cet endroit.
 
 
Une autre question, si j'ai oublié de libérer un File descriptor et que maintenant j'ai l'erreur Errno 98 (already in use) je fais comment pour le libérer ?


Message édité par djaibi86 le 10-05-2008 à 20:15:24
mood
Publicité
Posté le 10-05-2008 à 19:45:54  profilanswer
 

n°1730590
Profil sup​primé
Posté le 11-05-2008 à 11:45:44  answer
 

Salut,
 
Pour le "port" comme tu passe "&port", ne devrait-il être déclaré comme un pointeur sur un int ?

n°1730593
Joel F
Real men use unique_ptr
Posté le 11-05-2008 à 12:11:21  profilanswer
 

non, tu dis n'importe quoi, va jouer avec magicBuzz dans le champ de mine stp.
 
@djaibi. Quelle ligne l'erreur ?

n°1730595
Profil sup​primé
Posté le 11-05-2008 à 12:17:16  answer
 

Joel F a écrit :

non, tu dis n'importe quoi, va jouer avec magicBuzz dans le champ de mine stp.
 
@djaibi. Quelle ligne l'erreur ?


 
Pauvre tache. [:intercalaire]  [:kadreg]

n°1730596
gilou
Modérateur
Modzilla
Posté le 11-05-2008 à 12:26:25  profilanswer
 

[:jpa]  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1730597
gilou
Modérateur
Modzilla
Posté le 11-05-2008 à 12:31:42  profilanswer
 

Sinon, a priori, je ne vois rien qui me semble mauvais dans le code posté, sauf peut être que l'on a des short int alors qu'il me semble que ntohs et son comparse attendent des unsigned short int.
Je serais donc interessé a savoir a quelle ligne exacte se situe le pb, moi aussi.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1730783
Profil sup​primé
Posté le 12-05-2008 à 02:51:48  answer
 

Moi je comprends pas la ligne 28, j'aurai passé port et pas *port en argument.

n°1730850
gilou
Modérateur
Modzilla
Posté le 12-05-2008 à 14:30:49  profilanswer
 

Ce qui signifie que tu n'as pas lu la ligne 37.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1730879
Profil sup​primé
Posté le 12-05-2008 à 15:45:58  answer
 

gilou a écrit :

Ce qui signifie que tu n'as pas lu la ligne 37.
A+,


 
Non c'est la 12 que j'avais pas lu, mal réveillé désolé.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Segmentation fault et make pointer from interger without a cast

 

Sujets relatifs
La segmentation de la RAMSegmentation fault sur chaine de caractère. Bizarrrre
[réglé] installation qt 4.3.4 et erreur makeCourbes avec Qwt (erreur de segmentation)
un segementation fault a cause d'un fclose???[C#] Erreur de cast !!
[resolu(erreur de noob)]Probleme "segment fault"[C]Arbres et seg fault
Erreur 127 commande make g++ introuvable 
Plus de sujets relatifs à : Segmentation fault et make pointer from interger without a cast


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR