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

Fork hilos

Estas en el tema de Fork hilos en el foro de C/C++ en Foros del Web. Trato de hacer un programa que cree 5 hilos sin embargo no deja de darme fallos y no se como avanzar he comenzado hace poco ...
  #1 (permalink)  
Antiguo 07/10/2013, 11:28
 
Fecha de Ingreso: febrero-2013
Ubicación: Madrid
Mensajes: 20
Antigüedad: 11 años, 8 meses
Puntos: 1
Fork hilos

Trato de hacer un programa que cree 5 hilos sin embargo no deja de darme fallos y no se como avanzar he comenzado hace poco la programacion en c asi que espero que puedan ayudarme


#include <unistd.h>
#include <stdio.h>
# include <sys/wait.h>
void main()
{
int contador; //creamos un contador para controlar los hilos
//que queremos crear
for(contador=0;contador<5;contador++)
//con este bucle crearemos 5 hilos y el padre.
{
if(fork()==0)//Creamos el hilo
{
printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid());
//imprimimos en pantalla el pid del hijo el numero de proceso
// y el pid del padre.
}else //Si lo que devuelve el fork
//es distinto de cero
{
wait(2);//esperamos a que termine el hijo
printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid());
//imprimimos en pantalla el pid del hijo el numero de proceso
// y el pid del padre.
exit(0); //eliminamos el hilo
}
}

}
Me dice main’ debe devolver ‘int’
conversión inválida de ‘int’ a ‘void
error: argumento de inicialización 1 de ‘__pid_t wait(void*)
  #2 (permalink)  
Antiguo 07/10/2013, 12:04
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Fork hilos

Nunca he usado hilos.
Pero por los errores que pusiste puedo sugerir 2 cosas.
Primero, como dice ahi, main debe regresar in. Esto debe dar una advertencia, no un error, pero de preferencia ponlo.

El error principal es que wait tiene como parametro un puntero tipo void y tu le estas pasando un entero.

podrias hacer algo asi:

int timepo = 2;

wait(&tiempo);

Intentalo a ver si funciona.

Saludos
  #3 (permalink)  
Antiguo 07/10/2013, 13:13
 
Fecha de Ingreso: febrero-2013
Ubicación: Madrid
Mensajes: 20
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Fork hilos

Haciendo lo que me dijistes y quedando el codigo por tanto asi

#include <unistd.h>
#include <stdio.h>
# include <sys/wait.h>
void main()
{
int contador; //creamos un contador para controlar los hilos

//que queremos crear
for(contador=0;contador<5;contador++)
//con este bucle crearemos 5 hilos y el padre.
{
if(fork()==0)//Creamos el hilo
{
printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid());
//imprimimos en pantalla el pid del hijo el numero de proceso
// y el pid del padre.
}else //Si lo que devuelve el fork
//es distinto de cero
{
int tiempo=2;
wait(&tiempo);//esperamos a que termine el hijo
printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid());
//imprimimos en pantalla el pid del hijo el numero de proceso
// y el pid del padre.
exit(0); //eliminamos el hilo
}
}

}

sigue dando el mismo error main’ debe devolver ‘int’ y ademas exit’ no se declaró en este ámbito
  #4 (permalink)  
Antiguo 07/10/2013, 19:22
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Fork hilos

Pues cambia
void main
a
int main

Y al final del main ponle

return 0;

Saludos
  #5 (permalink)  
Antiguo 10/10/2013, 04:10
 
Fecha de Ingreso: febrero-2013
Ubicación: Madrid
Mensajes: 20
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Fork hilos

Gracias me ha funcionado.
  #6 (permalink)  
Antiguo 10/10/2013, 08:45
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Fork hilos

me parece que si es void no le tienes que poner nada asi que solo main () funcionaria, pero en realidad no creo que aya problema si lo dejas en int.
  #7 (permalink)  
Antiguo 10/10/2013, 11:39
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Fork hilos

De hecho solo deberia lanzar una advertencia, pero al parecer el IDE activa la opcion de convertir las advertencias en errores.

Lo correcto es que main regrese int.

Saludos

Etiquetas: hilos, int, numero, proceso, programa
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 07:29.