コマンドを受け取って実行する小さなシェル プログラムを作成しています。ユーザーが無効なコマンドを入力すると、if ステートメントは -1 を返します。コマンドが正しい場合はコマンドを実行しますが、コマンドを実行するとプログラムは終了します。その後のコード行を実行しないというのは、何が間違っているのでしょうか? execvp( command.argv[0], command.argv) を ls および cat コマンドでテストしたので、うまくいくと確信しています。これが私のコードです。
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;
}