Ich schreibe ein kleines Shell-Programm, das einen Befehl nimmt und ausführt. Wenn der Benutzer einen ungültigen Befehl eingibt, gibt die if-Anweisung eine -1 zurück. Wenn der Befehl korrekt ist, führt er den Befehl aus, aber sobald er den Befehl ausführt, wird das Programm beendet. Was mache ich falsch, dass die Codezeilen danach nicht ausgeführt werden? Ich habe execvp (command.argv [0], command.argv) mit ls und cat-Befehlen getestet, also bin ich mir ziemlich sicher, dass es funktioniert. Hier ist mein Code.Programm stoppt nach execvp (command.argv [0], command.argv)
int shell(char *cmd_str){
int commandLength=0;
cmd_t command;
commandLength=make_cmd(cmd_str, command);
cout<< commandLength<<endl;
cout << command.argv[0]<< endl;
if(execvp(command.argv[0], command.argv)==-1)
//if the command it executed nothing runs after this line
{
commandLength=-1;
}else
{
cout<<"work"<<endl;
}
cout<< commandLength<<endl;
return commandLength;
}
Genau so sollen die 'exec *' Funktionen funktionieren! Sie laden das neue Programm und _replace_ dein Programm mit dem neuen. –
@Aaron: Sie würden erwarten, dass Flugzeugpiloten mindestens ** das Handbuch ** des Flugzeugs lesen, an dem sie "arbeiten" wollen. Warum haben Sie nicht die gleichen Erwartungen an Sie als Programmierer? – ereOn