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

  FORUM HardWare.fr
  Programmation
  C

  traitement d'erreur avec popen()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traitement d'erreur avec popen()

n°1800666
majong
Posté le 15-10-2008 à 17:59:05  profilanswer
 

Bonjour, je fais un traitement dans extraire à l'aide de popen() qui execute lynx :

Code :
  1. char *extraire(const char* lien)
  2. {
  3.   FILE* flux = popen(lien,"r" );
  4. ...
  5. }
  6. ...
  7. valeur=extraire("lynx -dump  url_site" );
  8. ...


Le problème c'est que des fois la connexion au site echoue et tous ce code est dans un fork().
Comment puis je modifier le programme de sorte que si la connexion echoue avec l'url1 on passe à l'url2 ?

mood
Publicité
Posté le 15-10-2008 à 17:59:05  profilanswer
 

n°1800675
matafan
Posté le 15-10-2008 à 18:17:12  profilanswer
 

On fait "man popen", et on constate que c'est sur le pclose() qu'on peut détecter que le programme s'est terminé anormalement.

n°1800682
majong
Posté le 15-10-2008 à 18:36:09  profilanswer
 

matafan a écrit :

On fait "man popen", et on constate que c'est sur le pclose() qu'on peut détecter que le programme s'est terminé anormalement.


 
Je fais :

Code :
  1. if (pclose(flux)==-1)
  2.       {
  3.          trace_message("Echec connexion" );
  4.       }


Je n'ai pas de message d'erreur "Echec connexion" alors que l'url est faux mais sur l'écran l'erreur suivant -->lynx : accès impossible au fichier de départ url_bidon<-- se défile!

n°1800687
tpierron
Posté le 15-10-2008 à 18:52:05  profilanswer
 

Hmm, si la fonction pclose() n'est pas aussi pourrie que sa man page, tu devrais plutôt faire un truc du genre :
 

Code :
  1. int ret = pclose(flux)
  2. if (ret < 0 || (WIFEXITED(ret) && WEXITSTATUS(ret) > 0))
  3. {
  4.     trace_message("Echec connexion" );
  5. }


Bon, maintenant si lynx renvoie 0 en cas d'URL invalide, bah, utilise un autre programme pour tester l'URL.

n°1800693
matafan
Posté le 15-10-2008 à 19:14:36  profilanswer
 

Non c'est ça qu'il faut faire :

Code :
  1. int rc = pclose(flux);
  2. if ((rc != -1) && WIFEXITED(rc) && WEXITSTATUS(rc)) {
  3.         fputs("Echec connexion", stderr);
  4. }


Message édité par matafan le 15-10-2008 à 19:15:45

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

  traitement d'erreur avec popen()

 

Sujets relatifs
erreur de login page de connection - php ODBCErreur d'execution 13
erreur 1004....[Access] - l'expression ne fait pas partie de la fonction d'agregat
erreur de requete??MySQL server version for the right syntax to use neerreur de tnsname
Erreur execution access 2000[Visual C++], erreur de compil d'un hello world
[SQL] Erreur syntaxe [RESOLU]Erreur lancement serveur Tomcat sur Eclipse
Plus de sujets relatifs à : traitement d'erreur avec popen()


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