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)