[ Foro de C ]

Listado de tuberias en c, con un ligero error, compilable

05-Sep-2015 13:04
Invitado ()
1 Respuestas

 

 
#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$


14-Sep-2015 23:03
Nacho Cabanes (+31)

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.)