Ich teste die execvpe() in c, ich versuchte den untenstehenden Code, der den Fehler verursacht, da "implizite Deklaration der Funktion 'execvpe' in C99 [-Wimplicit-function-declaration] ungültig ist" .execvpe implizite Deklarationsfehler
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
#include <unistd.h>
int main(int argc, char const *argv[])
{
//execl("/bin/echo", "echo", "Hello, world", NULL);
char *path = getenv("PATH");
char pathenv[strlen(path) + sizeof("PATH=")];
sprintf(pathenv, "PATH=%s", path);
char *envp[] = {pathenv, NULL};
char *tests[] = {"ls", "-lR", NULL};
execvpe(tests[0], tests, envp);
fprintf(stderr, "failed to execute \"%s\"\n", tests[0]);
return 0;
}
Dann teste ich diesen Code wie unten den bestehenden Status zu testen (die ich von Compiler warnings for execvpe function kopiert, diesmal keinen Fehler. Gibt es jemand kann mir helfen, herauszufinden, was in meinem obigen Code falsch? Vielen Dank!
#include <unistd.h>
extern int execvpe(const char *file, char *const argv[], char *const envp[]);
Vielen Dank! Nachdem ich es verschoben habe, hat es den Fehler wie "Fehler: implizite Deklaration der Funktion 'execvpe' ist ungültig in C99 [-Werror, -Wimplicit-Funktion-Deklaration] Execvpe (Tests [0], Tests, envp);" – coco
@coco Es funktioniert hier mit GCC 6.3.1 und Glibc 2.25. Verwenden Sie möglicherweise eine andere C-Standardbibliothek, die nicht 'execvpe' enthält? – ephemient
Sie können eine Demonstration des Fehlens von Warnungen online hier sehen: https://godbolt.org/g/m2eyRi – ephemient