Ich arbeite an einem Nebenprojekt, wo ich 5 Kinderprozesse spawnen will dann execvp in ein zweites Programm namens isEven, die sagen wird, ob die Zahl, die an sie übergeben wird, gerade ist oder nicht. Der Aufruf von execvp schlägt jedoch fehl, da ich ihn in gdb ausgeführt habe und er nicht ausgeführt wird. Args und Load (Args) werden beide in einer anderen Funktion aufgerufen.c Programmierung mit execvp
Vielen Dank im Voraus !!!
//Code to load binary
void load(char* args[])
{
execvp("./isEven", args);
printf("ERROR\n");
}
//args being passed in
char *args[] = {"./isEven", number, NULL};
load(args);
Hier ist ein kleineres Programm, das ich geschrieben habe, das das gleiche tut, was ich gerade versuche zu tun. Gdb sagt, ich bekomme einen Segmentierungsfehler.
int main(int argc, char *argv[])
{
int returnCode = fork();
if(returnCode == 0)
{
char *args[] = {"./isEven", 12345, NULL};
execvp("./isEven", args);
printf(errno);
printf("ERROR: execvp failed\n");
exit(-1);
}
else if(returnCode < 0)
{
fprintf(stderr, "fork failed\n");
}
else
{
//i am the parent
printf("I am the parent");
}
return 1;
}
Was ist 'Nummer'? Wo ist der Rest des Programms? (Wenn der Rest des Programms zu groß ist, verkleinern Sie es und sehen Sie, ob das Problem weiterhin auftritt. [Mcve]) – Ryan
execvp setzt 'errno' wenn es fehlschlägt. – tkausl
Ich schrieb ein schnelles Programm, nur um zu testen, ob ich execvp arbeiten kann, aber gdb gibt mir einen seg-Fehler. – Steven