sous-routine système

Objectif

Exécute une commande shell.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include <stdlib.h>
int system ( String)
const char *String;

Descriptif

La sous-routine system transmet le paramètre String à la commande sh en tant qu'entrée. Ensuite, la commande sh interprète le paramètre String comme une commande et l'exécute.

La sous-routine system appelle la sous-routine fork pour créer un processus enfant qui, à son tour, utilise la sous-routine exec l pour exécuter la /La commande usr/bin/sh , qui interprète la commande shell contenue dans le paramètre String . Lorsqu'elle est appelée sur le chemin sécurisé, la sous-routine system exécute l'interpréteur de commandes Trusted Path (/usr/bin/tsh). Le processus en cours attend que le shell soit terminé, puis renvoie l'état de sortie du shell. Le statut d'exit du shell est renvoyé de la même manière qu'un appel à la sous-routine wait ou waitpid , à l'aide des structures du fichier sys/wait.h .

La sous-routine system ignore les signaux SIGINT et SIGQUIT , et bloque le signal SIGCHILD lors de l'attente de l'arrêt de la commande spécifiée par le paramètre String . Si cela peut entraîner l'application à manquer un signal qui l'aurait arrêté, l'application doit utiliser la valeur renvoyée par la sous-routine system pour effectuer l'action appropriée si la commande s'est arrêtée en raison de la réception d'un signal. La sous-routine system n'affecte pas le statut de fin d'un enfant du processus appelant, sauf si ce processus a été créé par la sous-routine system . La sous-routine system n'est pas renvoyée tant que le processus enfant n'est pas arrêté.

Paramètres

Article Descriptif
Chaîne Indique une commande shell sh valide.
Remarque: la sous-routine system exécute uniquement des commandes shell sh . Les résultats sont imprévisibles si le paramètre String n'est pas une commande shell sh valide.

Valeurs renvoyées

Une fois l'opération terminée, la sous-routine system renvoie l'état de sortie de l'interpréteur de commandes. Le statut d'exit du shell est renvoyé de la même manière qu'un appel à la sous-routine wait ou waitpid , à l'aide des structures du fichier sys/wait.h .

Si le paramètre String est un pointeur null et qu'un processeur de commandes est disponible, la sous-routine system renvoie une valeur différente de zéro. Si la sous-routine fork échoue ou si l'état de sortie de l'interpréteur de commandes ne peut être obtenu, la sous-routine système renvoie la valeur -1. Si la sous-routine exec l échoue, la sous-routine système renvoie la valeur 127. Dans tous les cas, la variable globale errno est définie pour indiquer l'erreur.

Codes d'erreur

La sous-routine system échoue si l'une des conditions suivantes est vérifiée:

Article Descriptif
FEAGA La limite imposée par le système sur le nombre total de processus en cours d'exécution, à l'échelle du système ou par un ID utilisateur unique, a été dépassée.
EINTR La sous-routine system a été interrompue par un signal qui a été intercepté avant le démarrage du processus demandé. Le code d'erreur EINTR ne sera jamais renvoyé après le début du processus demandé.
ENOMEM L'espace de stockage disponible est insuffisant.