Bonjour à tous, je débute en Programmation système en C sous Linux et voici le code en C de l'ensemble de la commande ls|wc|wc, il compile bien mais le programme ne s'execute pas, je ne sais pas trop pourquoi, que se passe-t-il ? :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <memory.h>
#include <unistd.h>
 
int main (int argc, char ** argv)
{
	/* creation du tube */
	int tube[2];
	if (pipe(tube) == -1)
	{
		printf ("la creation du tube a echoué\n");
		return 0;
	}
	int pid;
	if ((pid=fork())<0)
	{ 
		printf("primitive fork à echoué");
		return 2;
	}
 
	if((pid = fork())==0)
	{
		{
		close(tube[0]);
		dup2(tube[0], 1);
		close(tube[1]);
		execlp("wc", "wc", (char *) 0);
		printf("la commande wc a echouée");
		return 3;
		}
 
		{
			close(tube[0]);
			dup2(tube[0], 1);
			close(tube[1]);
			execlp("ls","ls",(char *)0);
			printf("la commande ls a echouée");
			return 4;
		}
	}
 
		else/*(pid > 0)*/
		{
			{
			close(tube[1]);
			dup2(tube[1], 0);
			close(tube[0]);
			execlp("wc", "wc", (char *) 0);
		        printf("la commande wc a echouée");
				return 5;
			}
 
			{
				close(tube[1]);
				dup2(tube[1], 0);
				close(tube[0]);
				execlp("wc","wc",(char *) 0);
				return 6;
			}
		}
		return 0;
	}