То, что вы делаете, не сработает, потому что семейство вызовов exec
фактически заменит вашу текущую программу в текущем процессе. Другими словами, вы будете прерваны, так что, когда cd
будет завершен, ваш родительский процесс снова вступит во владение.
Если вы хотите изменить рабочий каталог для текущего процесса, используйте chdir
. Если вы хотите изменить его при выходе, вам не повезло, потому что ваша программа работает в отдельном процессе от родительского, который ее запустил.
Итак, если у вас нет какой-либо формы общения с родителем, это не сработает.