菜鸟求助关于fork、wait、exec族函数的综合问题
在linux系统下用fork()、wait()、exec族函数做一个程序
要求:以%号为提示符,在%输入任意linux系统指令如“ls -l”后执行,执行结束后返回提示符%,继续等待输入指令
我们老师给的提示是死循环,但是我想不明白到底该怎么做……求解惑
[解决办法]
- C/C++ code
#include <unistd.h>#include <sys/wait.h>#include <stdlib.h>#include <string.h>#define MAXLINE 4096int main(int argc, char* argv[]){ char str[MAXLINE]; pid_t pid; while(1) { putchar('%'); gets(str); if (str == NULL) return (1); if (strcmp(str, "q") == 0 || strcmp(str, "Q") == 0) break; if ((pid = fork()) < 0) { perror("fork error"); } else if (pid == 0) { if (execl("/bin/sh", "sh", "-c", str, (char *)0) < 0) { perror("execl error"); continue ; } } else { if(waitpid(pid, 0, 0) < 0) { perror("waitpid error"); return 1; } } } return 0;}
[解决办法]