Привет, я работаю над оболочкой unix и столкнулся с двумя проблемами. Мне было интересно, может ли кто-нибудь из вас помочь мне. Моя первая проблема заключается в том, что оболочка не ждет завершения дочернего процесса. На самом деле я могу ввести больше команд, пока работает дочерний процесс. Моя вторая проблема заключается в следующих двух строках. Я не получаю никакого отображения на оболочке.
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
У меня есть следующий метод для выполнения процесса, введенного пользователем: например, firefox, ls -a и т. д.
void execute(char *command[], char *file, int descriptor){
pid_t pid;
pid = fork();
if(pid == -1){
printf("error in execute has occurred\n");
}
if(pid == 0){
execvp(*command,command);
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
wait(&status);
exit(EXIT_SUCCESS);
}
else{
printf("ignore for now\n");
}
}
Здесь я вызываю команду выполнения. Он отлично работает и запускает процесс, но не ждет его завершения.
execute(commandArgv, "STANDARD",0);
Ребята, у вас есть идеи, что я могу делать неправильно? Спасибо, я очень ценю любое время, которое вы тратите, чтобы помочь мне в этом.