Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

342
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!