Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

349
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda