Если вы exec*
(вызываете любую функцию exec из семейства exec), тогда код новой программы загружается в ваш текущий процесс, и выполнение продолжается с его основной функцией и ее содержимым. При успешном выполнении этих функций они никогда не вернутся, потому что ваш printf
больше не существует в памяти.
Я думаю, вы путаете exec*
с функцией fork
. Это склеит новый дочерний процесс, который будет выполнять тот же код, что и родительский.
Если вам нужно создать новый поток, который делит данные и адресное пространство с основным потоком, вам следует использовать функцию pthread_create
. Новый процесс не будет обмениваться данными, и вам придется общаться с другим процессом, используя другие механизмы, такие как каналы или разделяемая память.