Programm stoppt nach execvp (command.argv [0], command.argv)

Ich schreibe ein kleines Shell-Programm, das einen Befehl entgegennimmt und ihn ausführt. Wenn der Benutzer einen ungültigen Befehl eingibt, gibt die if-Anweisung -1 zurück. Wenn der Befehl korrekt ist, führt er den Befehl aus. Sobald er den Befehl ausführt, endet das Programm. 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, daher bin ich mir ziemlich sicher, dass es funktioniert. Hier ist mein Code.

<code>  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;


}
</code>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage