Я очень новичок в использовании этих различных типов системных вызовов в Linux, что привело меня к большой путанице. При этом я прошу только нажать в правильном направлении/начале, а не на завершение. Используя fork
, exec
и wait
, я прочитал их, но это все еще не помогло мне в моей ситуации. Мне нужно сделать следующее:Понимание fork, exec и wait в C++ (Linux)
Распечатайте promt и дождитесь, когда пользователь войдет в команду с четырьмя аргументами или параметрами. «Выход» остановит программу.
Некоторые примеры, mkdir blah
, создает каталог, а затем запрашивает новую команду, touch blah/this blah/that blah/there
.
Мне нужно позвонить fork
, чтобы создать дочерний процесс для выполнения введенной команды, а затем вызвать exec
в дочернем процессе, чтобы ребенок стал программой, которая должна быть выполнена (эта часть меня смущает еще больше) и, наконец, вызовите wait
в родительском процессе, чтобы интерпретатор не распечатывал следующее приглашение до завершения команды.
Что было бы лучшим способом достичь этого? Как в, как лучше всего читать в команде/arguments/options, а затем выполнить их? Я бы предположил, что было бы лучше сделать это do..while
с условием while
того, что проверяет «выхода»
Что мало я сделал, что не так много, я знаю.
int main()
{
char command[25];
pid_t pid;
int rs;
cout << "Enter command: ";
cin >> command;
while(strcmp(command, "exit") != 0) {
pid = fork();
if (pid == 0) { //child process
rs = execl("echo", command);
}
else { // parent process
cout << "Enter a command: ";
cin >> command;
}
}
return 0;
}
'человек fork' даже есть примеры кода. Понятно, что вы предоставляете свою попытку. Код проще и точнее предлагать улучшения, чем ваш вопрос о * наилучшем способе *. –