我正在阅读Unix环境中的高级编程第3版,第7.3节,流程终止,以下声明让我感到困惑:
进程终止有八种方法。正常终止 以五种方式发生:
- 从主
返回- 致电退出
- 调用_exit或_Exit
- 从其开始例程(第11.5节)返回最后一个线程
- 从最后一个帖子
调用pthread_exit(第11.5节) 醇>
代表
- 从其开始例程(第11.5节)返回最后一个线程
- 从最后一个帖子
调用pthread_exit(第11.5节) 醇>
如果进程没有从main函数返回,我认为进程不会终止,即使此进程中的最后一个线程被终止,我是对的吗?如果没有,为什么4和5是对的?
答案 0 :(得分:2)
main
线程是其中一个主题。例如,在
void *start(void *arg) {
sleep(1);
pthread_exit(0);
}
int main() {
pthread_t t;
pthread_create(&t, 0, start, 0);
pthread_exit(0);
}
主线程立即退出,但进程继续运行,直到最后一个线程退出。反之亦然,
void *start(void *arg) {
pthread_exit(0);
}
int main() {
pthread_t t;
pthread_create(&t, 0, start, 0);
sleep(1);
pthread_exit(0);
}
主线程是剩下的最后一个。