C/Visual C - Temporizador C

 
Vista:
sin imagen de perfil

Temporizador C

Publicado por Jose (13 intervenciones) el 14/03/2017 23:45:09
Buenas tardes gente.

Estaría necesitando ayuda en hacer un temporizador.

La idea es que se puedan ingresar datos mientras corre ese tiempo, cuando se termina, salta de funcion o termina el programa, lo que siga del programa no?

Lo pensé con la función sleep() pero al usarla no puedo ingresar nada.

Por ejemplo, que ingrese algún nombre en tantos segundos, si terminan esos segundos no puede ingresar mas el nombre y pasa a la siguiente función del programa.

De que manera lo podría hacer? Desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Temporizador C

Publicado por agustin (272 intervenciones) el 15/03/2017 10:14:00
Sí quieres terminar el ingreso tienes que usar hilos. ¿por qué porque por ejemplo scanf o gets no terminaría hasta ingresar una cadena con un intro con lo que seguiría pudiendo ingresar caracteres fuera de tiempo. Con hilos tendrías un hilo principal el cual tendría un sleep del tamaño deseado y justo después vendría la parte donde se cierra el hilo usado para el ingreso y un printf que indique que se acabo el tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Temporizador C

Publicado por agustin (272 intervenciones) el 15/03/2017 11:42:31
No soy nada experto y seguramente se podrá hacer usando alguna función o semáforos para esto pero a mi esto me funciona medianamente decente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <pthread.h>
#include <stdio.h>
 
/* nuestra funcion del hilo */
void *pedir(void *void_ptr)
{
    char nombre[100];
    int *in=(int*) void_ptr;
    printf ("Inserta un nombre: ");
    gets (nombre);
    *in=1;
    return NULL;
}
 
int main()
{
    int out = 0,inc=0;
    int tiempo=10; //Es el tiempo que tenemos para ingresar el nombre
 
    /* variable con la que manejar el hilo */
    pthread_t thread_pedir;
 
    /* creamos el hilo */
    if(pthread_create(&thread_pedir, NULL, pedir,&out))
    {
        fprintf(stderr, "Error creando el hilo\n");
        return 1;
 
    }
 
    //espero x segundos
    while (out==0) {
        sleep (1);
        if (inc >tiempo) {
            // Finalizo el hilo
            pthread_cancel(thread_pedir);
            printf("\nTiempo finalizado\n");
            out=1;
        } else if (out==1) {
            printf ("Nombre introducido\n");
        }
        ++inc;
    }
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Temporizador C

Publicado por Jose (13 intervenciones) el 15/03/2017 14:39:03
Muchas gracias,me sirvio para darme cuenta con que lo podria hacer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Temporizador C

Publicado por Tom (619 intervenciones) el 15/03/2017 17:40:22
Aparte de los hilos, en sistemas unix (linux) podrías usar signals (SIG_ALARM) o incluso select() o poll().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Temporizador C

Publicado por Jose (13 intervenciones) el 15/03/2017 17:44:16
Perfecto, voy a buscar tambien!!
Uso linux asique me puede servir tambien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar