loading...

miércoles, 21 de diciembre de 2011

Como hacer una conexión tipo tubería entre un programa y otro. Usando la función piper()

 

 

#include <unistd.h>
int pipe(int filedes[2]);

/*

+Este código crea un tubo y crea un proceso hijo con tenedor ().
* El niño se convierte en el "más" del programa y espera a que
* La entrada de STDIN. El proceso padre envía los datos por su
* Final de la tubería, la cual es recibida por el niño.

 */
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int fd[2], i;
pid_t child;
if (pipe(fd) != 0)
{
/* pipe( ) error */
}
child = fork();
if (child == -1)
{
/* fork( ) error */
}
else if (child == 0)
{
close(fd[1]);
if (dup2(fd[0], STDIN_FILENO) != STDIN_FILENO)
{
/* dup2( ) error */
}
execl("/usr/bin/more", (char *) NULL);
}
else
{
close(fd[0]);
for (i = 0; i < 100; ++i)
{
if (write(fd[1], "hello\n", 6) == -1)
{
/* write( ) error */
}
}
close(fd[1]);
waitpid(child, NULL, 0);
}


No hay comentarios:

Publicar un comentario