[C] system() valeur retournée

Résolu
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
jaky1212 Messages postés 126 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 ;)

8 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Évite system() et oriente toi plutôt vers la famille des exec
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
jaky1212 Messages postés 126 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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Voici un petit peu de documentation sur exec et spawn pour Windows
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
un ti exemple svp car je ne comprends pas tout
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
Merci, problème résolu
0