Quais são as diferentes versões de exec usadas em C e C ++?

91

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?

ninja ninja
fonte

Respostas:

181

As diferenças são combinações de:

  1. L vs V : se você deseja passar os parâmetros para o programa executado como

    • L : parâmetros individuais na chamada (lista de argumentos variável): execl(), execle(), execlp(), eexeclpe()
    • V : como uma matriz de char * 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.

  2. 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.

  3. 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.

Christo
fonte
1
Melhor explicação que vi até agora. É quase tão curto quanto a documentação / referência oficial, mas é mil vezes mais expressivo, informativo e compreensível. Obrigado.
Akito
5

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

IanNorton
fonte
2
isso realmente não responde à pergunta e é apenas um link.
Jean-François Fabre
Antes de chegar aqui, li a documentação no site, mas não ajudou muito. As explicações são muito curtas, embora devam ser elaboradas. Além disso, é difícil encontrar a explicação correta para o que você está procurando, se estiver procurando do zero.
Akito
-4

É 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.

Bruziuz
fonte
2
Embora este link possa responder à pergunta, é melhor incluir as partes essenciais da resposta aqui e fornecer o link para referência. As respostas somente com link podem se tornar inválidas se a página vinculada mudar. - Da avaliação
31 de
Os links eram para amazon e posxis standart para serem úteis ao leitor. Ok, retirei os links conforme você pediu, mas discordo que isso seja melhor. Remova sua donwvote se agora estiver mais legível.
bruziuz
1
Eu não votei contra sua resposta. Acabei de receber meu comentário sobre sua resposta, que achei de baixa qualidade. Não tive a intenção de remover os links. O objetivo aqui é incluir trechos relevantes do link que ajudem os futuros leitores a entender a resposta instantaneamente. Apenas postar os links na resposta não ajuda ninguém.
31piy de