我正在尝试创建一个交互式shell

时间:2013-10-06 22:31:44

标签: c shell-exec

我正在尝试创建一个交互式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;


}

1 个答案:

答案 0 :(得分:0)

假设shell()在使用fork()调用的子进程中运行,您需要确保父进程正确等待子进程终止。请参阅wait(2)函数系列。

此外,您还需要检索所述子流程的退出状态(再次参见wait(2))。

您还可以尝试实现流重定向。假设这是一个练习,我将把关于如何实现这些内容的额外研究留给用户:) - 查看dup(2)