在Linux中终止进程的方式有多少?

时间:2017-04-29 04:10:31

标签: linux multithreading process pthreads

我正在阅读Unix环境中的高级编程第3版,第7.3节,流程终止,以下声明让我感到困惑:

  

进程终止有八种方法。正常终止   以五种方式发生:

     
      
  1. 从主
  2. 返回   
  3. 致电退出
  4.   
  5. 调用_exit或_Exit
  6.   
  7. 从其开始例程(第11.5节)返回最后一个线程
  8.   
  9. 从最后一个帖子
  10. 调用pthread_exit(第11.5节)   

代表

  
      
  1. 从其开始例程(第11.5节)返回最后一个线程
  2.   
  3. 从最后一个帖子
  4. 调用pthread_exit(第11.5节)   

如果进程没有从main函数返回,我认为进程不会终止,即使此进程中的最后一个线程被终止,我是对的吗?如果没有,为什么4和5是对的?

1 个答案:

答案 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);
}

主线程是剩下的最后一个。