簡體   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