2013-10-06 4 views
0

사용자에게 명령 프롬프트를 표시하고 명령을 구문 분석 한 다음 하위 프로세스와 함께 실행하는 대화 형 셸 프로그램을 만들려고합니다. 여기에 코드가 있는데,이 곳을 어디로 가야할지 모르겠다. 가정 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은'cout'을 사용합니다. 중요 : c *는 * C++가 아닙니다. – Pankrates

답변

0

fork() 호출 자식 프로세스 내에서 실행되고, 당신은 자식 프로세스가 종료 할 때까지 부모 프로세스가 제대로 기다리는 확인해야합니다. 함수 패밀리 wait(2)을 참조하십시오.

또한 자식 프로세스의 종료 상태를 검색해야합니다 (다시, wait(2) 참조).

또한 스트림 리디렉션을 구현할 수도 있습니다. 이것이 운동이라고 가정하고, 나는 사용자들에게 이러한 것들을 어떻게 구현하는지에 대한 추가 연구를 떠날 것입니다. - dup(2)을보십시오.