Implémentation de la commande " ls -l | wc -l " en language C
Bonjour,
Je souhaite (comme indiqué dans le titre) implémenter la commande "ls -l | wc -l" en C.
Mon problème est que je ne trouve pas de solution comment donner le contenu de ls à wc.
Voici ce que j'ai déjà fait:
Code:
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
|
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc,char **argv)
{
pid_t pid;
int tube[2];
char buffer[3000];
pipe(tube);
pid=fork();
switch(pid)
{
case -1: perror("fork");exit(1);
case 0: close(1);
dup(tube[1]);
close(tube[1]);
close(tube[0]);
execl("/bin/ls","ls","-l",NULL);
exit(0);
default: close(0);
dup(tube[0]);
close(tube[1]);
close(tube[0]);
/* Mon problème se situe ici, comment donner la pipe à wc
*/
execl("/bin/wc","wc","-l","-",NULL);
}
return 0;
} |
J'ai ajouté -, car dans la man, il est expliqué ceci:
Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when
FILE is -, read standard input.
J'ai cherché sur le forum et tuto, mais je ne trouve pas la solution.
Quelqu'un peut-il me donner un coup de main stp ?