je dois exécuter une commande CLI Linux et obtenir sa sortie stdout de C.obtenir une sortie de commande dans la conduite, C pour Linux
Je peux utiliser des tuyaux() pour créer un tuyau, puis fork/exec, redirection d'enfant stdout descriptor dans le canal avant d'appeler exec() et de lire le canal dans le parent. De plus, j'aurai besoin d'attendre l'enfant.
Existe-t-il un simple appel à fork + redirect + exec + wait, comme system() fork + exec + wait, seul system() ne fait pas la redirection.
Il ya popen(), qui fait fork + redirect + exec, mais ne fait pas d'attente, donc je ne peux pas obtenir le statut de sortie.
besoin d'obtenir le statut de sortie de la commande –
pclose fournit la même valeur que wait4(), donc vous y êtes bien ... – dmckee
pclose() le retourne avec un avertissement: l'échec de l'exécution du shell est indiscernable de l'échec du shell à s'exécuter commande, ou une sortie immédiate de la commande. Le seul indice est un statut de sortie de 127. Donc, si cela ne suffit pas, vous devez écrire votre propre, comme dmckee dit –