新しいスレッドを作成し、実行を新しいスレッドにオフロードして、メイン スレッドを強制終了しようとしています。サンプルプログラムです。
#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
問題の理由は何ですか? スレッドをゾンビ/無効状態のままにすることなく、同じことを達成する方法はありますか?