OVH Cloud OVH Cloud

explications pipe.

11 réponses
Avatar
Guillaume Desticourt
bonjour,

je suis coince sur pipe. j ai donc ecrit ce petit programme de test
qui est cense faire "echo pouet | wc", afficher exit main et
quitter. Mais a l execution, il m affiche deux fois "pouet\n", et me
rend la main. Et a l entree clavier suivante, j ai droit a ca:
guillaume@fallen:/tmp$ wc: : Input/output error
0 0 1

quelqu un voit il ou je me suis trompe?

merci d avance,

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int fd[2];
int pid_1;
int pid_2;
int status;

if ((pid_1 = fork()) == -1)
exit(EXIT_FAILURE);
pipe(fd);
/* fils */
if (!pid_1 )
{
close(fd[1]);
dup2(STDIN_FILENO, fd[0]);
system("wc");
exit(0);
}
close(fd[0]);
if ((pid_2 = fork() == -1))
exit(EXIT_FAILURE);
/* fils */
if (!pid_2)
{
dup2(STDOUT_FILENO, fd[1]);
system("exit main");
exit(0);
}
waitpid(pid_2, &status, 0);
waitpid(pid_1, &status, 0);
printf("pouet\n");
return 0;
}

--
Guillaume Desticourt

1 réponse

1 2
Avatar
Laurent Wacrenier
Arnaud Launay écrit:
Le Wed, 3 Dec 2003 23:05:13 +0000 (UTC), Laurent Wacrenier écrivit:
system("exit main");
C'est sensé faire quoi ?



La même chose que exit(3) je présume, mais en crade.


Chez moi, ça fait la même chose que
fprintf(sterr, "exit: Illegal number: mainn");



1 2