這是我用來執行shell命令的已清理的代碼。
儘管isExit
始終爲0,並且循環應該運行,只要它是!isExit
,我的程序將在執行一個循環後以命令ls
作爲參數終止。
有沒有人有任何想法? 輸出正常(ls),但程序終止。代碼用C語言編寫,在Eclipse上。
在Ubuntu上運行12是在虛擬機上運行的Windows 7意外終止循環中運行的程序
int main() {
int numberOfCommands, numOfWords, i, isExit = 0, isBackGround = 0, isSucces;
char input[256];
char *cmdAndArgs[256];
char *commands[256];
do{
// gets and parses user command...
ExecuteCmd(cmdAndArgs);
} while (!isExit);
return EXIT_SUCCESS;
}
void ExecuteCmd(char *cmdAndArgs[]){
pid_t pid;
pid = fork();
if (pid != 0) {
execvp(cmdAndArgs[0], cmdAndArgs);
exit(0);
} else {
waitpid(pid, &status, 0);
}
}
程序可能因異常或崩潰而退出。嘗試把'printf(「isExit =%d」,(int)isExit);'在while循環之外,看看是否有東西被打印出來。 – sashoalm