Segundo a man page do bash:

exec [command [arguments]] - If command is specified, it replaces the
shell.  No new process is created.  The arguments become the arguments  to
command.

Entendo que o processo do bash é substituído pelo comando invocado, por isso
quando você fez "exec ls" o PID do primeiro bash foi substituído pelo ls e
depois aquele bash retomou a execução.

Existem duas utilidades interessantes para o exec.

A primeira refere-se ao próprio processo de execução de um shell script
onde, após o primeiro fork do shell para execução do script, o exec é
chamado para substituir esse novo processo pelo programa a ser executado.
Maiores detalhes abaixo:

"running a shell script: Your shell forks, the child does an exec,
> potentially the path is searched, the kernel opens the file and examines
> enough bytes to determine how to run the file, in the case of a shell script
> a shell must be started with the name of the script as its argument, the
> shell then opens the file, reads it and executes the statements. "


Uma segunda utilidade do exec refere-se ao redirecionamento de stdin, stdout
ou ambos para arquivos. Veja o segundo link de referência para maiores
detalhes.

Atenciosamente

Ricardo Hillbrecht

Referências:
http://www.gilesorr.com/bashprompt/howto/x263.html
http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/x13082.html



2009/4/8 Pedro Borges <[email protected]>

>
>
> Olá pessoal,
>
> Estou estudando para o exame 102 que agora cobra o comando exec. Eu entendi
> que ele é usado para reaproveitar um processo existente na execução de um
> novo comando ao invés de criar um sub-processo para o mesmo.
> echo $$
> 39
> bash
> echo $$
> 45
> exec ls
> echo $$
> 39
>
> Quando usei o exec ele recuperou o PID do primeiro comando. Até ai tudo
> bem. Agora, qual a real utilidade do uso deste comando, alguém poderia dar
> uma luz?
>
> Desde já muito obrigado.
>
> Abraço,
>
> Pedro
>
> ------------------------------
> Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
> 10<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/>-
> Celebridades<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/>-
> Música<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/>-
> Esportes<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/>
> 
>

Responder a