これは、シェル コマンドを実行するために使用しているクリーンなコードです。
は常にisExit
0 であり、ループは である限り実行する必要がありますが、実行する引数として!isExit
コマンドを使用して 1 つのループの後にプログラムが終了しますls
。
誰にもアイデアはありますか?出力は OK (ls) ですが、プログラムは終了します。コードはEclipse上でCで書かれています。
Windows 7 上の VM で実行されている Ubuntu 12 で実行されています。
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);
}
}