2013-10-06 26 views
0

我正在尝试创建一个交互式shell程序,提示用户输入命令,解析命令,然后用子进程执行它。这是我有的代码,但我不知道该PLEAE帮助后去哪里!我正在尝试创建一个交互式shell

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

您可能会感到头痛,但这里有一个开始:http://rik0.altervista.org/snippets/csimpleshell.html只是复制代码不会帮助您的教育。 –

+0

此外,您将此标记为c,但您使用的是cout,它是C++重要:c *不是* C++ – Pankrates

回答

0

假设shell()被称为与fork()子进程中运行,你需要确保父进程正确地等待子进程终止。请参阅wait(2)系列功能。

此外,您需要检索所述子进程的退出状态(请参阅wait(2))。

您也可以尝试实施流重定向。假设这是一个练习,我将离开额外的研究,如何实现这些东西给用户:) - 看看dup(2)