3

でスレッドを作成していますpthread_create

私が使用するスレッド関数の中で

fprintf(stdout, "text\n");

しかし、これはコンソールに何も出力しません。にも同じ問題がありprintfます。また、標準出力バッファをフラッシュしようとしましたが、成功しませんでした。問題は、スレッドからコンソールに何かを出力する方法です。

更新:

void *listen_t(void *arg){
  fprintf(stdout, "test\n");
  fflush(stdout);
}

int main(int argc, char **argv){
  pthread_t tid;
  int err;

  err = pthread_create(&tid, NULL, &listen_t, &thread_params);
  if (err != 0){
    printf("\ncan't create thread :[%s]", strerror(err));
  }
  else{
    printf("\n Thread created successfully\n");
  }
  return 0;
}

main のコードは正常に動作します。しかし、スレッドは何も出力しません

4

1 に答える 1

4

の呼び出しがありません:の出力がコンソールに表示されるpthread_join前にメイン プログラムが終了すると、何も出力されません。printf

例に追加pthread_join(tid, NULL);すると、出力が修正されます。

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

void *listen_t(void *arg){
  fprintf(stdout, "test\n");
  fflush(stdout);
}

int main(int argc, char **argv){
  pthread_t tid;
  int err;

  err = pthread_create(&tid, NULL, &listen_t, NULL);
  if (err != 0){
    printf("\ncan't create thread :[%d]", strerror(err));
  }
  else{
    printf("\n Thread created successfully\n");
  }
  pthread_join(tid, NULL);
  return 0;
}
于 2013-04-10T17:51:45.890 に答える