繁体   English   中英

在ac程序中,整个过程是否在主线程终止时终止?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM