Я пытаюсь написать код о процессе, который выполняет программы из $ PATH с помощью команды execlp(). (Она не должна быть командой execlp, но я нашел ее полезной для этот) Я достиг ожидаемого результата, но мне нужно запустить несколько команд. Более конкретно, я хочу, чтобы дочерний процесс запускал команду exec, затем родительский процесс печатал текст, указывающий, что он готов принять другую команду. Затем дочерний процесс запустит новую команду exec. Мой код заключается в следующем:цикл процесса в C
int main (int argc, char *argp[]) {
pid_t progpid = fork(); // the fork command for the creation of the child process
int status = 0;
char com[256];
if (progpid < 0) // the check in case of failure
{
printf("PROGRAM ABORTED!");
return 0;
}
do
{
if (progpid == 0) // the child process
{
scanf("%s", com);
if (com == "exit")
{
exit(0);
}
else
{
execlp(com, com, NULL);
}
}
else //the parent process
{
wait(&status);
printf("$");
}
}while (com != "exit");
return 0;
}
Ожидаемый результат:
<program which I input from keyboard> (for example : ls)
<output of the program>
$<next program>
<output of the next program>
.
.
.
$exit
Короче говоря, я хочу, чтобы запускать программы, пока я вхожу выхода, где она заканчивается, не делая ничего другого. Однако я получаю следующее:
<program>
<output of program>
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Он продолжает печатать $, пока не закрою его. Я новичок в процессах, поэтому пока не будьте слишком суровы относительно моего кода. Спасибо заранее!
Логика вашей петли является ошибочной. Вы только создаете * один * дочерний процесс в начале программы. Вам нужно создать один дочерний процесс * за введенную команду *. –