0

ユーザーにコマンドの入力を求め、コマンドを解析し、子プロセスで実行するインタラクティブなシェル プログラムを作成しようとしています。これが私が持っているコードですが、このPLEAE HELPの後にどこに行くべきかわからない!!!!

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;


}
4

1 に答える 1

0

shell()で呼び出された子プロセス内で が実行されていると仮定するfork()と、親プロセスが子プロセスの終了を適切に待機するようにする必要があります。wait(2)関数ファミリーを参照してください。

さらに、前述の子プロセスの終了ステータスを取得する必要があります (再度、 を参照してくださいwait(2))。

ストリームのリダイレクトを実装することもできます。これが演習であると仮定すると、これらの実装方法に関する追加の調査はユーザーに任せます :) -- を調べてdup(2)ください。

于 2013-10-06T22:38:49.577 に答える