嗨我正在研究一個unix shell,我遇到了兩個問題。我想知道你們中的任何一位能否幫助我。我的第一個問題是shell不在等待子進程終止。我實際上可以在子進程運行時輸入更多的命令。我的第二個問題在於以下兩行。我沒有在shell上顯示任何內容。execv,等待,Unix編程,如何等待孩子
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
我有以下方法來執行由用戶輸入的方法:即火狐,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);
你們有什麼想法我可能做錯了嗎?謝謝,我非常感謝您隨時爲我提供幫助。
我在執行調用後移動了等待。這工作得很好。謝謝。 – user69514 2009-09-23 19:02:12
或將其移動到代碼的「忽略現在」部分,這是父級在fork()'d後執行的部分。 – 2009-09-23 19:03:52