elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Bucle infinito y hilos en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bucle infinito y hilos en C  (Leído 4,718 veces)
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


Ver Perfil
Bucle infinito y hilos en C
« en: 24 Octubre 2012, 21:56 pm »

¡Buenas a todos!

Estoy haciendo un programa en C para linux y tengo problemas con los hilos...

Mi programa tiene un bucle que se cierra cuando el usuario presione "q". Pero claro si uso una funcion como getchar() dentro del bucle el bucle se parará y no quiero que pare el bucle. Asi que he pensado lanzar un hilo y que sea el hilo el que se quede parado para leer del teclado y que cuando el getchar() del hilo lea una 'q' modifique una varible que cierre el bucle.

Aqui os pongo el codigo que tengo....pero meda un par de errores de compilacion...

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <pthread.h>
  5.  
  6. void *salir( void *ptr );
  7.  
  8. int main()
  9. {
  10.     pthread_t thread1;
  11.     char *salida = "";
  12.  
  13.     pthread_create( &thread1, NULL, salir, (void*) salida);
  14.     pthread_join( thread1, NULL);
  15.  
  16.     printf("bucle infinito\nPresione q para salir\n");
  17.        while(strcmp(salida,"q")){
  18.  
  19.        }
  20.     return 0;
  21. }
  22.  
  23. void *salir( void *ptr )
  24. {
  25.     char out='0';
  26.        while(out!='q'){
  27.                out=(char)fgetc(stdin);
  28.     ptr=(void *)"q";
  29.     printf("presionaste q\n");
  30. }

Y los errores de compilacion son estos:
Citar
funcion.c: In function ‘salir’:
funcion.c:30:1: error: expected declaration or statement at end of input
funcion.c:30:1: warning: control reaches end of non-void function [-Wreturn-type]

¿Alguien sabe como solucionarlos?

Un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


Ver Perfil
Re: Bucle infinito y hilos en C
« Respuesta #1 en: 24 Octubre 2012, 22:12 pm »

Uups ya me di cuenta del fallo...tenia un corchete de mas...pero ahora tengo otros....resulta que no estoy incluyendo la libreria pthread.h y no se porque.....

code:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <pthread.h>
  5.  
  6. void *salir( void *ptr );
  7.  
  8. int main()
  9. {
  10.     pthread_t thread1;
  11.     char *salida = "";
  12.  
  13.     pthread_create( &thread1, NULL, salir, (void*) salida);
  14.     pthread_join( thread1, NULL);
  15.  
  16.     printf("bucle infinito\nPresione q para salir\n");
  17.        while(strcmp(salida,"q")){
  18.  
  19.        }
  20.     return 0;
  21. }
  22.  
  23. void *salir( void *ptr )
  24. {
  25.     char out='0';
  26.        while(out!='q')
  27.                out=(char)fgetc(stdin);
  28.     ptr=(void *)"q";
  29.     printf("presionaste q\n");
  30.     return ptr;
  31. }
  32.  
Compilador:
Citar
/tmp/cceoP4ms.o: In function `main':
funcion.c:(.text+0x33): undefined reference to `pthread_create'
funcion.c:(.text+0x47): undefined reference to `pthread_join'
collect2: ld returned 1 exit status

¿Que falla?

Un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Bucle infinito y hilos en C
« Respuesta #2 en: 25 Octubre 2012, 03:31 am »

Al compilar necesitas enlazar la librería de hilos (gcc tuprograma.c -lpthread).

PD: Por qué usas cadenas cuando puedes usar un caracter?
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Bucle infinito y hilos en C
« Respuesta #3 en: 25 Octubre 2012, 15:46 pm »

http://foro.elhacker.net/empty-t369295.0.html
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
probando un bucle infinito... « 1 2 3 »
Bugs y Exploits
mousehack 22 16,355 Último mensaje 28 Agosto 2015, 21:46 pm
por MCKSys Argentina
El que se ha metido en un bucle infinito soy yo...
Programación C/C++
Superplay 0 3,990 Último mensaje 1 Diciembre 2010, 21:14 pm
por Superplay
Implementacion de bucle infinito
Programación C/C++
mark182 3 4,786 Último mensaje 12 Marzo 2011, 11:33 am
por Akai
Bucle infinito interumpible
Programación C/C++
soyloqbuskas 3 2,985 Último mensaje 23 Agosto 2012, 01:06 am
por 0xDani
error, bucle infinito, alguien que me ayude a evitar el bucle infinito
Programación C/C++
marcos0204 4 2,865 Último mensaje 27 Marzo 2020, 22:44 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines