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