1

新しいスレッドを作成し、実行を新しいスレッドにオフロードして、メイン スレッドを強制終了しようとしています。サンプルプログラムです。

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

void * main_thread(void * param) {
  while (1) {
  }
}

int main(int argc, char *argv[]) {

int result = 0;

pthread_attr_t attr;
pthread_t thread;
result = pthread_attr_init(&attr);
printf ("attr init : %d\n", result);

result = pthread_attr_setstacksize(&attr, 1024);
printf ("attr set stack: %d\n", result);

result = pthread_create (&thread, &attr, main_thread, NULL);
printf ("create new thread: %d\n", result);

result = pthread_detach(pthread_self());
printf ("detach main thread: %d\n", result);

pthread_exit (NULL);


return 0;

}

しかし、これはスレッド (およびプロセス?) を無効な状態のままにしています。

ps -aef | grep threaded
user 204 306 9 10:20 pts/8    00:00:21 [threaded_progra] <defunct>

それから私はこれを見つけました - http://www.mentby.com/kaz-kylheku/main-thread-pthreadexitsysexit-bug.html

問題の理由は何ですか? スレッドをゾンビ/無効状態のままにすることなく、同じことを達成する方法はありますか?

4

0 に答える 0