#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#define MAXLINE 1024
int main()
{
char buf[MAXLINE];
pid_t pid;
int status;
int status;
printf("%%");
while(fgets(buf,MAXLINE,stdin)!=NULL){//获取字符串
if(buf[strlen(buf)-1]=='
'){
buf[strlen(buf)-1]=0;
}
//我们称调用进程为父进程,新创建的进程为子进程,fork对父进程
//返回新的子进程的进程ID,对子进程返回的是0
if((pid=fork())<0){//创建了一个新的进程
printf("fork error");
}else if(pid==0){
//execlp以执行从标准输入读入的命令
//执行成功不返回,失败则返回-1,失败原因在errno中
execlp(buf,buf,(char *)0);
printf("coundn't execute:%s",buf);
exit(127);
}
//waitpid返回的是子进程的终止的状态(status变量)
if((pid=waitpid(pid,&status,0))<0){
printf("waitpid error");
}
printf("%%");
}
exit(0);
}