c - scanf中断,并在线程中打印

时间:2014-10-22 23:34:19

标签: c linux

我有一个打印数字的简单线程,问题是在scanf上打印了线程。这样的事情。

input> DATAOFTHREAD

但我想打印出类似的结果

DATAOFTHREAD
input>
有可能吗?我应该使用什么功能?这是我的代码:

#include <stdio.h>
#include <pthread.h> 

void *connection_handler(void* data) {
    int i = (int)data;
    for(i=0;i<5;i++) {
        printf("%d", i);
        fflush(stdout);

    }

    pthread_exit(NULL);
}

int main()
{   
    int t;
    int x;
    int rc;
    pthread_t thread_id;
    rc = pthread_create(&thread_id, NULL, connection_handler, (void *)x);
    if(rc) {
        printf("Error en pthread()\n");
        return 1;
    }
    printf("Ingresa un numero: ");
    scanf("%d", &t);

    printf("%d\n", t);

    pthread_exit(NULL);

    return 0;

}

由于

1 个答案:

答案 0 :(得分:0)

您可以调用pthread_join,这样只有在线程完成后才能执行scanf:

pthread_join(&thread_id, NULL);
printf("Ingresa un numero: ");
scanf("%d", &t);

顺便说一句,您不需要在main()中调用pthread_exit。