Quando você chama um método da família exec
, ele não cria um novo processo; em vez disso, exec
substitui a memória do processo atual e o conjunto de instruções, etc., pelo processo que você deseja executar.
Como exemplo, você deseja executar grep
usando exec. bash
é um processo (que possui memória separada, espaço de endereço). Agora, quando você chamar exec(grep)
, exec substituirá a memória, o espaço de endereço, o conjunto de instruções etc do processo atual por grep's
data. Isso significa que bash
processo não existirá mais. Como resultado, você não pode voltar ao terminal depois de concluir o comando grep
. É por isso que os métodos da família exec nunca retornam. Você não pode executar nenhum código após o exec; é inacessível.