Sous-routine popen

Objectif

Lance un canal de communication vers un processus.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include <stdio.h>

FILE *popen ( Command,  Type)
const char *Command, *Type;

Descriptif

La sous-routine popen crée un canal de communication entre le programme appelant et une commande shell à exécuter.

Remarque: La sous-routine popen exécute uniquement des commandes shell sh . Les résultats sont imprévisibles si le paramètre Commande n'est pas une commande shell sh valide. Si le terminal est dans un état sécurisé, les commandes shell tsh sont exécutées.

Si les flux ouverts par des appels précédents à la sous-routine popen restent ouverts dans le processus parent, la sous-routine popen les ferme dans le processus enfant.

La sous-routine popen renvoie un pointeur vers une structure FILE pour le flux.

Attention: Si les processus d'origine et le processus ont démarré avec la sous-routine popen en même temps qu'ils lisent ou écrivent un fichier commun, ils ne doivent pas utiliser d'E-S en mémoire tampon. Si c'est le cas, les résultats sont imprévisibles.

Certains problèmes liés à un filtre de sortie peuvent être évités en vider la mémoire tampon à l'aide de la sous-routine fflush .

Paramètres

Tableau 1. Paramètres
Article Descriptif
Commande Pointe vers une chaîne à terminaison nulle contenant une ligne de commande shell.
type Pointe vers une chaîne à terminaison nulle contenant un mode d'E-S. Si le paramètre Type est la valeur r, vous pouvez lire la sortie standard de la commande en la lisant dans le fichier Flux. Si le paramètre Type est la valeur w, vous pouvez écrire dans l'entrée standard de la commande en écrivant dans le fichier Stream.

Etant donné que les fichiers ouverts sont partagés, une commande de type r peut être utilisée comme filtre d'entrée et une commande de type w comme filtre de sortie.

Valeurs renvoyées

La sous-routine popen renvoie un pointeur null si des fichiers ou des processus ne peuvent pas être créés ou si l'interpréteur de commandes est inaccessible.

Codes d'erreur

La sous-routine popen définit la variable EINVAL si le paramètre Type n'est pas valide. La sous-routine popen peut également définir des variables globales errno comme décrit par les sous-routines fork ou pipe .