![](/img/trans.png)
[英]How to do something in C when a process terminates without hanging the program?
[英]In a c program, does the whole process terminates when the main thread terminate?
在linux中,无论主线程如何终止,整个过程都会通过函数exit()或从main返回而终止。 如果主线程从main()返回,它将返回到称为Crt.o或类似名称的“ C运行时”。 在crt.o中,其C代码是这样的:exit(main(argc,argv)); exit()将由主线程调用
最终,所有线程终止。
我的想法似乎正确吗?
如果在crt.o中将exit()替换为诸如void thread_exit(int)的线程终止函数,该函数只能终止具有退出状态的线程,则crt.o的c源代码看起来像thread_exit(main(argc, argv)),当主线程终止时,其他线程是否仍在运行?
从main
返回相当于调用exit
,并终止进程 。 要仅终止单个线程,请使用pthread_exit
。 请注意,初始线程调用pthread_exit
是有效的(并且直到所有线程退出或其中一个调用exit
,该过程才会终止),如果初始线程以外的其他线程从它们的启动函数返回,则隐式调用pthread_exit
。
在Unix上,进程在最后一个线程终止后终止。 请注意,这可以是任何线程,而不仅仅是“主”线程。 因此,如果将exit替换为pthread_exit
,但在返回main之前生成了一个线程,则您的进程不会终止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.