В linux весь процесс завершается, когда основной поток завершается независимо от того, как он завершается, функцией exit() или возвращается из main. Если основной поток возвращается из main(), он вернется в «C runtime», известный как crt.o или что-то в этом роде. В crt.o, чей c-код выглядит так: exit (main (argc, argv)); exit() будет вызываться основным потоком
, в результате, все потоки завершаются.В программе c, завершается ли весь процесс, когда основной поток завершается?
Является ли моя мысль правильной?
Если в crt.o exit() заменена функция завершения потока, такая как void thread_exit (int), которая может только завершать поток с статусом выхода, исходный код c crt.o выглядит как thread_exit (main (argc, argv)), выполняются ли другие потоки, когда основной поток завершается?
Кажется, было бы быстрее написать тестовую программу, чтобы рассказать, чем написать вопрос :) – sarnold
@sarnold: Написание тестовой программы редко является правильным способом ответить на такой вопрос. –