Provided by: manpages-pt-dev_20040726-4_all bug

NOME

       execl, execlp, execle, execv, execvp - executa um arquivo

SINOPSE

       #include <unistd.h>

       extern char **environ;

       int execl( const char *path, const char *arg, ...);
       int execlp( const char *file, const char *arg, ...);
       int execle( const char *path, const char *arg , ..., char * const envp[]);
       int execv( const char *path, char *const argv[]);
       int execvp( const char *file, char *const argv[]);

DESCRIÇÃO

       A  família  de  funções  exec substitui a imagem do processo atual por uma imagem de um novo processo. As
       funções descritas nesta página de manual são front-ends para a  função  execve(2).   (Veja  a  página  de
       manual de execve para informações detalhadas sobre a substituição do processo atual.)

       O argumento inicial para estas funções é o nome de caminho de um arquivo a ser executado.

       O  argumento  const char *arg e as reticências que o seguem nas funções execl, execlp, e execle podem ser
       vistos como arg0, arg1, ..., argn.  Juntos eles descrevem uma lista de um ou mais ponteiros para  strings
       terminadas  em  '\0'  que representam a lista de argumentos disponível ao programa executado.  O primeiro
       argumento, por convenção, deveria apontar para o nome do arquivo associado ao arquivo sendo executado.  A
       lista de argumentos deve ser terminada por um ponteiro NULL .

       As  funções execv e execvp fornecem um vetor de ponteiros para strings terminadas em '\0' que representam
       a lista de argumentos disponível ao novo programa.  O primeiro argumento, por convenção, deveria  apontar
       para o nome do arquivo associado ao arquivo sendo executado.  O vetor de ponteiros deve ser terminado por
       um ponteiro NULL .

       A função execle especifica também o ambiente do processo executado através de um parâmetro adicional  que
       vem  depois  do  ponteiro  NULL  que  termina  a  lista de argumentos na lista de parâmetros ou depois do
       ponteiro para o vetor argv.  Este parâmetro adicional é um vetor de ponteiros para strings terminadas  em
       '\0'  e  deve  ser  terminado por um ponteiro NULL .  As outras funções obtêm o ambiente para a imagem do
       novo processo da variável externa environ no processo atual.

       Algumas destas funções têm uma semântica especial.

       As funções execlp e execvp duplicarão as ações do shell na busca por um arquivo executável se o  nome  de
       arquivo  especificado  não contém um caractere barra (/).  O caminho da busca é o caminho especificado no
       ambiente  através  da  variável  PATH.   Se  esta  variável  não  está  especificada,  o  caminho  padrão
       ``:/bin:/usr/bin'' é utilizado.  Além disso, alguns erros são tratados de maneira especial.

       Se  a  permissão  é  negada  para  um  arquivo (a tentativa de execve retornou EACCES), estas funções vão
       continuar pesquisando o resto do caminho de busca.  Se nenhum outro arquivo for  encontrado,  entretanto,
       elas irão retornar com a variável global errno contendo o valor EACCESS.

       Se  um cabeçalho de um arquivo não for reconhecido (a tentativa de execve retrnou ENOEXEC), estas funções
       irão executar o shell com o caminho do arquivo como seu primeiro argumento.  (Se esta  tentativa  falhar,
       nenhuma busca adicional é realizada.)

VALORES DE RETORNO

       Se  qualquer  das  funções  exec  retornar, um erro terá ocorrido.  O valor de retorno é -1, e a variável
       global errno será ajustada para indicar o erro.

ARQUIVOS

       /bin/sh

ERROS

       Todas essas funções podem falhar e ajustar errno para qualquer um dos erros especificados pela função  de
       biblioteca execve(2).

VEJA TAMBÉM

       sh(1), execve(2), fork(2), environ(5), ptrace(2)

COMPATIBILIDADE

       Em  alguns  outros  sistemas  o PATH padrão possui o diretório de trabalho atual listado depois de /bin e
       /usr/bin, como uma medida anti-cavalo-de-Tróia.  De acordo  com  a  libc  5.4.7,  o  Linux  ainda  usa  o
       tradicional "diretório atual primeiro" no PATH padrão.

       O  comportamento  de  execlp e execvp quando erros ocorrem durante uma tentativa de executar um arquivo é
       prática histórica, mas não tem sido documentado tradicionalmente e não é especificado pelo padrão  POSIX.
       O BSD (e possivelmente outros sistemas) realiza automaticamente uma espera e tenta novamente se ETXTBSY é
       encontrado. O Linux trata isso como um erro grave e retorna imediatamente.

       Tradicionalmente, as funções execlp e execvp ignoravam todos os erros exceto os descritos acima e  ENOMEM
       e  E2BIG,  nos  quais  elas  retornavam.   Agora  elas retornam se qualquer erro além dos descritos acima
       ocorrer.

PADRÕES

       Execl, execv, execle, execlp e execvp estão de acordo com IEEE Std1003.1-88 (``POSIX.1'').

TRADUZIDO POR LDP-BR em 21/08/2000.

       Felipe Pereira <Felipe.Pereira@ic.unicamp.br> (tradução)  xxxxxxxxxxxxxxxxxxxxxxxxxxx  <em@il-revisor.br>
       (revisão)