retourne la valeur de system () en C

J’utilise la commande system() en C pour exécuter des commandes telles que sc query mysql ou net start mysql .

Si le paramètre est un pointeur null, il renvoie 1 si le processeur cmd est correct, sinon il renvoie 0. Si l’exécution de la commande aboutit, elle renvoie 0.

Ma question est la suivante: puis-je obtenir une liste de ses valeurs de retour? Vous voulez savoir ce qu’il va renvoyer si la commande est invalide ou quelle sera la valeur de retour en cas d’exécution non réussie? Je veux faire différentes choses en fonction de la valeur de retour de system() .

Si docs state system () renvoie -1 si la création du nouveau processus d’exécution de la commande échoue, elle renvoie sinon le code de sortie de la commande exécutée. c’est la même valeur que vous pouvez récupérer en utilisant echo $? sous unix ou echo %ERRORLEVEL% dans Windows après l’exécution de la même commande dans un shell. Donc, si vous voulez gérer les valeurs de retour, vous devez regarder ce que les commandes exécutées renvoient.

Tout ce que vous avez à faire, c’est man system pour en savoir plus sur system()

DESCRIPTION system () exécute une commande spécifiée dans commande en appelant la commande / bin / sh -c et revient après exécution de la commande. Pendant l’exécution de la commande, SIGCHLD sera bloqué et SIGINT et SIGQUIT seront ignorés.

VALEUR RENVOYÉE La valeur renvoyée est -1 en cas d’erreur (par exemple, fork (2) a échoué) et l’état de retour de la commande dans le cas contraire. Ce dernier état de retour est au format spécifié dans wait (2). Ainsi, le code de sortie de la commande sera WEXITSTATUS (status). Au cas où / bin / sh ne pourrait pas être exécuté, l’état de sortie sera celui d’une commande qui quitte (127). Si la valeur de commande est NULL, system () renvoie une valeur différente de zéro si le shell est disponible et zéro sinon.

system () renvoie le code de sortie du processus que vous avez démarré.

Les codes de sortie ont généralement uniquement la convention selon laquelle un code de sortie égal à 0 signifie réussite et non nul à défaillance. Pour la signification réelle des différents codes de sortie, ils sont spécifiques à chaque programme, souvent à la merci du programmeur. Vous devrez consulter la documentation du programme particulier que vous exécutez (bien que le plus souvent, ce n’est pas documenté, vous devrez donc lire le code source)