Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

343
Visualizações
Intentando usar execvpe (...) pero obtengo un error de declaración implícito, aunque creo que estoy usando los tipos de argumento correctos

Recibo la siguiente advertencia cuando compilo:

 execute.c:20:2: warning: implicit declaration of function 'execvpe'[-Wimplicit-function-declaration] execvpe("ls", args, envp);

^

Tengo entendido que esto ocurre cuando la función que está tratando de usar tiene los tipos de argumentos incorrectos. Sin embargo, estoy bastante seguro de que estoy proporcionando los argumentos correctos para:

 int execvpe(const char *file, char *const argv[], char *const envp[]);

como se describe en la página del manual de Linux

Aquí están las partes relevantes de mi código:

 #include <unistd.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <stdlib.h> #include <string.h> void test_execvpe(char* envp[]) { const char* temp = getenv("PATH"); char path[strlen(temp)+1]; strcpy(path, temp); printf("envp[%d] = %s\n", 23, envp[23]); //print PATH char* args[] = {"-l", "/usr", (char*) NULL}; execvpe("ls", args, envp); } int main( int argc, char* argv[], char* envp[]) { //test_execlp(); test_execvpe(envp); return 0; }

¿Alguien sabe por qué me sigue apareciendo este error? ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

"declaración implícita de función" significa que el compilador no ha visto una declaración para esa función. La mayoría de los compiladores, incluido gcc, asumirán que la forma en que se usó la función es correcta y que el tipo de retorno es un int . Esto es generalmente una mala idea. Incluso si usa los argumentos correctamente, aún arrojará este error ya que el compilador no sabe que está usando los argumentos correctamente. La declaración de execvpe solo se incluye si se define _GNU_SOURCE antes de incluir unistd.h, ya que es una extensión de GNU.

Querrás algo como:

 #define _GNU_SOURCE #include <unistd.h>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda