Estas são todas as versões do exec que podem ser usadas em C (e C ++)
execl
execle
execlp
execv
execve
execvp
Qual é a diferença entre eles? Como você sabe qual usar?
Estas são todas as versões do exec que podem ser usadas em C (e C ++)
execl
execle
execlp
execv
execve
execvp
Qual é a diferença entre eles? Como você sabe qual usar?
Respostas:
As diferenças são combinações de:
L vs V : se você deseja passar os parâmetros para o programa executado como
execl()
, execle()
, execlp()
, eexeclpe()
execv()
, execve()
, execvp()
, eexecvpe()
O formato de matriz é útil quando o número de parâmetros que devem ser enviados para o processo executado é variável - como não conhecido com antecedência, portanto, você não pode colocar um número fixo de parâmetros em uma chamada de função.
E : As versões com um 'e' no final permitem que você passe adicionalmente um array de char * que é um conjunto de strings adicionado ao ambiente de processos gerados antes do programa executado ser iniciado. Mais uma maneira de passar parâmetros, na verdade.
P : As versões com 'p' usam a variável de ambiente PATH
para pesquisar o arquivo executável nomeado para execução. As versões sem o 'p' requerem que um caminho de arquivo absoluto ou relativo seja anexado ao nome do arquivo do executável se ele não estiver no diretório de trabalho atual.
Opengroup é uma das melhores referências gerais para funções centrais c / c ++.
Os documentos para exec * estão aqui: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
É uma extensão Posix da biblioteca C runtime. Se a documentação oficial da Posix for insuficiente, posso recomendar o livro - Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference" Página # 416 - que cubra essa questão.