Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda error con syserr

Estas en el tema de Ayuda error con syserr en el foro de C/C++ en Foros del Web. Hola, soy nuevo en el mundo de C, estoy haciendo unas pruebas para comprobar el funcionamiento de algunas llamadas al sistema. En este momento estoy ...
  #1 (permalink)  
Antiguo 04/09/2010, 12:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
Ayuda error con syserr

Hola, soy nuevo en el mundo de C, estoy haciendo unas pruebas para comprobar el funcionamiento de algunas llamadas al sistema. En este momento estoy trabajando con forks y PIDs y tengo el siguiente codigo.
Código C:
Ver original
  1. [CODE]#include <sys/types.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include "error.h"
  6. #include <sys/wait.h>
  7.  
  8. int main(){
  9.     int pidh;
  10.    
  11.     printf("\n Inicio prueba \n");
  12.     fflush(stdout);
  13.  
  14.     if ((pidh= fork()) == 0){
  15.     fprintf(stderr,"\n\t Soy el hijo: %d\n", getpid());
  16.     fprintf(stderr,"\n\t fork() me devuelve: %d\n",pidh);
  17.  
  18.     sleep(10);
  19.  
  20.     exit(1);
  21.     }
  22.  
  23.     if(wait(NULL) == -1){
  24.     syserr("wait");
  25.     }
  26.  
  27.     fprintf(stdout,"\n\t Soy el padre: %d\n", getpid());
  28.     fprintf(stderr,"\n\t fork() me devuelve: %d\n",pidh);
  29.  
  30.     exit(0);
  31. }[/CODE]


Al intentar compilar obtengo el siguiente error:


Undefined symbols:
"_syserr", referenced from:
_main in cclPQWNM.o
ld: symbol(s) not found
collect2: ld returned 1 exit status


Estoy siguiendo un guión para la elaboración de estos programas, alguien me podría decir a que se debe el error y como solucionarlo?

Tambien me gustaría saber algo sobre el archivo "error.h" incluido en la cabecera, segun este guión tiene que estar en el directorio donde compilo, he creado ese archivo yo mismo ya que no enxiste en /usr/include/

Gracias de antemano por las respuestas.
  #2 (permalink)  
Antiguo 04/09/2010, 13:31
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Ayuda error con syserr

¿que OS usas?
  #3 (permalink)  
Antiguo 04/09/2010, 15:50
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Ayuda error con syserr

Mira error.h tien que estar en la carpeta donde compiles a primera vista. Se puede cambiar la ubicacion a la hora de compilar pero dudu que sea tu casa.

Sobre esa funcion posiblemente este definida en ese archivo de cabezera. revisa la guia que estas usando. Posiblemente se definieron en eventos pasados.
  #4 (permalink)  
Antiguo 06/09/2010, 01:49
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Ayuda error con syserr

Ese es un error del linker (enlazador). Aunque el programa compile correctamente, lo que te indica es que no encuentra la implementación de esa función ni en tus archivos de programa ni en las librerías que tengas asociadas a tu proyecto. A primera vista, parece que esa llamada la hayas tomado de un ejemplo para otro compilador/sistema operativo y ocurra que esa función no exista para tu caso.

En cualquier caso, como ya te han dicho, conviene indicar qué SO utilizas, y qué compilador.
  #5 (permalink)  
Antiguo 06/09/2010, 03:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: Ayuda error con syserr

Yo borraría la línea 5 y cambiaría la línea 24 por "printf("Error wait\n") ;".
La función syserr() debería estar definida en error.h. Se elimina y ya está :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.