我們正在創建一個簡單的shell進程。fork並等待子進程好像根本沒有在等待
這裏是代碼:
pid = fork();
if (pid == -1) {
printf("fork error");
}else if (pid > 0) {
wait(&status);
}
else if (pid == 0) {
execute(myarg);
}
,這裏是執行功能: 無效執行(INT 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,沒有問題。但如果我們遇到了默認值,退出shell的硬代碼只有在我用類似exit的「Error in switch」輸入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
恕我直言,你應該看看'exec vp',這是專爲任意參數編號... –