当前位置: 技术问答>linux和unix
不是说等到最后一个线程退出进程才会结束么?(Linux)
来源: 互联网 发布时间:2016-09-21
本文导语: 我的代码: #include #include #include #include void* prun(void *); int main (int argc, char* argv[]) { pthread_t pid; pthread_create(&pid, NULL, prun, NULL); printf("main thread overn"); } void* prun ...
我的代码:
子线程刚开始主线程就结束,进程也结束了,只输出了main thread over,输入描述符全都被回收了,缓冲区也输出了。
#include
#include
#include
#include
void* prun(void *);
int main (int argc, char* argv[])
{
pthread_t pid;
pthread_create(&pid, NULL, prun, NULL);
printf("main thread overn");
}
void* prun (void* param)
{
printf ("new started,wating ...n");
sleep(10);
printf ("thread overn");
}
子线程刚开始主线程就结束,进程也结束了,只输出了main thread over,输入描述符全都被回收了,缓冲区也输出了。
|
主线程结束,整个进程就结束了。可以使用pthread_join等待子线程结束
|
在主线程中用pthread_join等待子线程结束。
|
应该在主线程使用pthread_join等待子线程结束
|
你的这种需求只能用进程实现:主进程退出,子进程可以继续执行。
如果用线程的话,则必须保证线程所在的进程不能结束。
如果用线程的话,则必须保证线程所在的进程不能结束。