spawnp

Prototypes

int spawnp(char *NomProgramme, int TailleTableHeritageFlux, int *TableHeritageFlux, struct inheritance *Heritage, char **Parametres, char **Environnement);

Description

Execute le programme NomProgramme avec les paramètres Parametres dans l'environnement Environnement.

Le paramètre optionnel TableHeritageFlux est une table définissant l'héritage des descripteurs de fichiers du processus père. La taille de cette table est TailleTableHeritageFlux.

Le programme commence à s'exécuter à la fonction main.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <spawn.h>

int IdentifiantProcessus;
char NomProgramme[100];
char Parametres[10][100];
char Environnement[10][100];
int CodeRetour;
int NumeroEntreeStandard;
int NumeroSortieStandard;
int NumeroSortieErreurStandard;
int TableMappingFlux[4];
struct inheritance Heritage;

...
TableMappingFlux[0]=NumeroEntreeStandard;
TableMappingFlux[1]=NumeroSortieStandard;
TableMappingFlux[2]=NumeroSortieErreurStandard;
TableMappingFlux[3]=SPAWN_CLOSED;
memset(Heritage, (int)0, sizeof(struct inheritance));
Heritage.flags=SPAWN_SETGROUP;
Heritage.pgroup=SPAWN_NEWGROUP;
IdentifiantProcessus=spawnp(NomProgramme, 4, TableMappingFlux, &Heritage, Parametres, Environnement);
if (IdentifiantProcessus==-1) ...
if (waitpid(IdentifiantProcessus, &CodeRetour, 0)==-1) ...

Avertissement

Si le programme exécuté est le même que celui du processus courant, alors cette fonction ressemble à l'API fork() d'Unix.

Si le programme exécuté est différent de celui du processus courant, alors cette fonction ressemble aux APIs fork() suivie de execvp() d'Unix.

Si le mapping des descripteurs de fichiers utilisent des fichiers spécifiques, alors à cette fonction permet de réaliser une communication par pipe comme via l'API pipe() d'Unix.

La taille de TableHeritageFlux ne doit comporter que des fichiers ouverts par le processus courant, en incluant éventuellement l'entrée standard, la sortie standard ou la sortie d'erreur standard.

Le résultat est -1 en cas d'erreur.

Voir aussi

waitpid pour lire le code retour du processus créé.