Question sur execlp() dans fork()

Voici un code fonctionnel qui réalise la commande ps | cut -d 1-6

[code]#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

/* rappel
Entrée standard stdin = 0
Sortie standard stdout = 1
*/

int main(void) {

int p[2];
pipe§;

pid_t pid;
pid_t pid2;

pid = fork();

	if(pid == -1) {
		printf("Erreur");
	}

	if(pid > 0) {
		pid2 = fork();
			if(pid2 == -1) {
			printf("Erreur");
			}

			if(pid2 > 0) {
				//pere
				printf("pere");

			} else { 	//fils2
				dup2(p[1],1);  
				execlp("ps","ps", NULL);
				close(p[1]);	
			}	
	} else {	//fils1
				dup2(p[0],0);
				execlp("cut","cut","-c","1-6",NULL);
				close(p[0]);
	}

}[/code]

Je souhaiterais savoir pourquoi si je ne mets pas ps et cut en double dans execpl() ça ne fonctionne pas (le code compile mais ne fonctionne pas) et où trouver la source de execpl().

Merci d’avance pour vos réponses,

Par convention le premier des arguments est le nom de l’exécutable.

Parfait, merci beaucoup 8)