[ Foro de C ]
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#define SIZE 512
int main( int argc, char **argv )
{
pid_t pid;
int p[2], readbytes;
char buffer[SIZE];
pipe( p );
if ( (pid=fork()) == 0 )
{ // hijo
close( p[1] ); /* cerramos el lado de escritura del pipe */
while( (readbytes=read( p[0], buffer, SIZE )) > 0)
write( 1, buffer, readbytes );
close( p[0] );
}
else
{ // padre
close( p[0] ); /* cerramos el lado de lectura del pipe */
strcpy( buffer, "Esto llega a traves de la tuberia\n" );
write( p[1], buffer, strlen( buffer ) );
close( p[1] );
}
waitpid( pid, NULL, 0 );
exit( 0 );
}
El resultado es esté, pero compila
tuberia.c:29:5: warning: incompatible implicit declaration of built-in function ?strcpy?
strcpy( buffer, "Esto llega a traves de la tuberia\n" );
^
tuberia.c:30:26: warning: incompatible implicit declaration of built-in function ?strlen?
write( p[1], buffer, strlen( buffer ) );
^
tuberia.c:35:3: warning: incompatible implicit declaration of built-in function ?exit?
exit( 0 );
^
jose@debian:~/listados_cc$
Ese tipo de errores ya te los he comentado alguna vez. Te faltan "includes". Es muy fácil descubrir en qué ficheros de cabecera se encuentran "strlen" y "exit", por ejemplo.
De hecho, lo tienes en este mismo sitio web:
http://www.aprendeaprogramar.com/referencia/view.php?f=strlen&leng=C
http://www.aprendeaprogramar.com/referencia/view.php?f=exit&leng=C
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)