[C] system() valeur retournée

Résolu/Fermé
jaky1212 Messages postés 126 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 4 mars 2013 - 26 août 2009 à 07:46
jaky1212 Messages postés 126 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 4 mars 2013 - 27 août 2009 à 13:36
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 août 2009 à 08:04
Évite system() et oriente toi plutôt vers la famille des exec
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 août 2009 à 08:18
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 mardi 25 août 2009 Statut Membre Dernière intervention 4 mars 2013 8
26 août 2009 à 08:31
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 août 2009 à 08:46
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
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 mardi 25 août 2009 Statut Membre Dernière intervention 4 mars 2013 8
27 août 2009 à 08:27
un ti exemple svp car je ne comprends pas tout
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
27 août 2009 à 09:32
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 mardi 25 août 2009 Statut Membre Dernière intervention 4 mars 2013 8
27 août 2009 à 13:36
Merci, problème résolu
0