2013-10-06 4 views
0

Я пытаюсь создать интерактивную программу оболочки, которая запрашивает у пользователя команду, анализирует команду и затем выполняет ее с дочерним процессом. Вот код, который у меня есть, но я не уверен, куда идти после этого 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; 


} 
+0

Возможно, вы находитесь в вашей голове, но вот начало: http://rik0.altervista.org/snippets/csimpleshell.html. Только код копирования не поможет вашему образованию. –

+0

Кроме того, вы отметили это как c, но вы используете 'cout', который является C++. Важно: c * не является * C++ – Pankrates

ответ

0

Предполагая shell() бежится в дочернем процессе вызывается с fork(), вам необходимо убедиться, что родительский процесс должным образом ждет дочерний процесс завершается. См. Семейство функций wait(2).

Кроме того, вы хотите получить статус выхода указанного дочернего процесса (см. Также wait(2)).

Вы также можете попробовать реализовать перенаправление потока. Предполагая, что это упражнение, я оставлю дополнительное исследование о том, как реализовать эти вещи до пользователя :) - посмотрите на dup(2).

Смежные вопросы