这是我用来执行 shell 命令的清理代码。
虽然isExit
总是 0 并且循环应该运行,只要它是!isExit
,我的程序在一个循环后终止,命令ls
作为要执行的参数。
有谁有想法吗?输出正常(ls),但随后程序终止。代码是在 Eclipse 上用 C 语言编写的。
在 Ubuntu 12 上运行,该 Ubuntu 12 在 Windows 7 上的 VM 上运行。
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);
}
}