我正在尝试创建一个交互式shell程序,它提示用户输入命令,解析命令,然后使用子进程执行它。这是我的代码,但我不知道在这个PLEAE帮助后去哪里!!!!
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;
}
答案 0 :(得分:0)
假设shell()
在使用fork()
调用的子进程中运行,您需要确保父进程正确等待子进程终止。请参阅wait(2)
函数系列。
此外,您还需要检索所述子流程的退出状态(再次参见wait(2)
)。
您还可以尝试实现流重定向。假设这是一个练习,我将把关于如何实现这些内容的额外研究留给用户:) - 查看dup(2)
。