[C] system() valeur retournée

Résolu
jaky1212 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -  
jaky1212 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
dans mon prog C je lance une application depuis la fonction system(). Comment faire pour gérer les erreurs, exemple lorsque l'application est introuvable ? Sous linux une valeur est renvoyée mais la sous windows je test de comparer la valeur renvoyée à un int mais il y a une erreur à la compilation. Merci ;)
Configuration: Windows
Firefox 3.5.2

8 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Évite system() et oriente toi plutôt vers la famille des exec
    0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    la famille des spawn ne serait elle pas mieux dans ce cas ?
    Par contre, il faut savoir si tu veux conserver la portabilité du programme (comme tu parle de Linux).
    0
  3. jaky1212 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   8
     
    mon programme s'utilisera uniquement sur windows donc pas de problème avec linux ;)
    Je pensais qu'il y aurai un ti -1 de retourné en cas d'erreur ^^ domage, mais la fonction system de windows ne renvoie rien ? j'ai pas trouvé sur google(sauf celle de linux)

    merci beaucoup
    0
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    Voici un petit peu de documentation sur exec et spawn pour Windows
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dominique
     
    Sous Windows, on n'utilise jamais system(),
    ni spawn ou exec , mais les apis Shell ou Kernel (elles sont faites pour ça justement)
    Voir sur le groupe classique des apis windows (https://www.ovh.co.uk/mail/ ) pour le code officiel (Microsoft)
    0
  7. jaky1212 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   8
     
    un ti exemple svp car je ne comprends pas tout
    0
  8. KX Messages postés 19031 Statut Modérateur 3 020
     
    Regarde dans les deux liens exec et spawn qu'on t'a donné hier.
    Il y a dans chacun un programme d'exemple.

    Par exemple si tu créé un programme D:\hello.exe qui affiche "Hello World !".
    Et que tu compiles les deux programmes D:\crt_exec.exe et D:\crt_spawn.exe

    En ligne de commandes tu auras :
    D:\>crt_exec hello.exe 1
    Hello World !
    
    D:\>crt_spawn 1 hello.exe
    Hello World !
    from SPAWN!
    Le "1" est une option qui utilise respectivement _execl et _spawnl, mais tu peux la faire varier de 1 à 8 pour utiliser les différentes fonctions des deux familles, et ainsi choisir celle qui t'es le plus adaptée en fonction de son comportement et des paramètres qu'elle nécessite.

    Remarque pour compiler :
    Dans crt_exec.c j'ai du rajouter stdlib.h et modifier return; en return 1;
    Dans crt_spawn.c j'ai du modifier exit(1); en return 1;
    0
  9. jaky1212 Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   8
     
    Merci, problème résolu
    0