我正在尝试创建一个交互式外壳程序,以提示用户输入命令,解析该命令,然后使用子进程执行它。这是我拥有的代码,但我不确定在此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;


}

最佳答案

假设shell()在用fork()调用的子进程中运行,则需要确保父进程正确等待子进程终止。请参见wait(2)系列功能。

此外,您将希望检索所述子进程的退出状态(再次参见wait(2))。

您也可以尝试实现流重定向。假设这是一个练习,我将把如何实现这些事情的更多研究留给用户:)-研究dup(2)

关于c - 我正在尝试创建一个交互式 shell ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19214751/

10-10 18:30