Это потому, что exec
выполняет код в текущем процессе. Обычно команда выполняется в дочерней оболочке / среде. Попробуйте следующее:
$ bash # open second shell
$ exec false # close second shell
$ echo $? # get exit code
$ exit # close terminal
Справочная страница здесь не очень полезна. Я часто использую exec
, если я запускаю сценарий через процесс Qt, и он должен закончиться через некоторое время, независимо от того, была ли команда завершена или нет.