#include"apue.h" #include"apueerror.h" #include<sys/wait.h> int main(void) { char buf[MAXLINE]; //from apue.h pid_t pid; int status; printf("%% "); /*print promt (printf requires %% to print %)*/ while(fgets(buf,MAXLINE,stdin)!=NULL){ if(buf[strlen(buf)-1]=='/n') buf[strlen(buf)-1]=0; /*replace newline with null*/ if((pid=fork())<0){ err_sys("fork error"); }else if(pid==0){ /*child*/ execlp(buf,buf,(char *)0); err_ret("couldn't execute : %s",buf); exit(127); } /*parent*/ if((pid=waitpid(pid,&status,0))<0) err_sys("waitpid error"); printf("%%"); } exit(0); } 标准库函数fgets(): char * fg