Мы создаем простой процесс оболочки.fork и ждут дочернего процесса, похоже, совсем не ждут
вот код:
pid = fork();
if (pid == -1) {
printf("fork error");
}else if (pid > 0) {
wait(&status);
}
else if (pid == 0) {
execute(myarg);
}
и здесь функция выполнения: недействительными выполнить (интермедиат ARGC) {
switch (argc) {
case 1:
execlp(arg[0], arg[0], NULL);
case 2:
execlp(arg[0], arg[0], arg[1], NULL);
case 3:
execlp(arg[0], arg[0], arg[1], arg[2], arg[3], NULL);
case 4:
execlp(arg[0], arg[0], arg[1], arg[2], arg[3], arg[4], NULL);
default:
printf("Error in switch\n");
}
моя проблема, как правило, если мы встречаем случай 1 ~ 4, нет проблем. но если мы встречаем по умолчанию, жесткий код для выхода из оболочки работает только, если я набираю exit с равным количеством «Ошибка в переключателе», который я получил. Помоги мне!!!
Результат, когда я не получаю «Ошибка в переключателе»:
kevinshell>> ls
myshellw.c posix posix.c posix.c~ shell-l.c~ test test.c`
kevinshell>> exit
и здесь, когда есть ошибка:
kevinshell>> stuff
Error in switch
kevinshell>> stuff
Error in switch
kevinshell>> another
Error in switch
kevinshell>> exit
kevinshell>> exit
kevinshell>> exit
kevinshell>> exit
IMHO вы должны взглянуть на 'exec vp', который предназначен для произвольного номера параметров ... –