一个unix的简单程序,有个问题不能理解望赐教
#include<stdio.h>#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/wait.h>
#define MAXLINE 4096
int main(void){
pid_t pid;
char buf[MAXLINE];
int status;
printf("%%");
while(fgets(buf,MAXLINE,stdin) != NULL)
{
if(buf[strlen(buf) - 1] == '\n')
buf[strlen(buf)-1] = 0;
if((pid = fork()) < 0){ //创建子进程
//err_sys("fork error");
printf("fork error \n");
}else if(pid == 0){
//执行命令
execlp(buf,buf,(char *) 0); //就是这里,函数execlp执行成功,就不再执行后面的部分,如果失败则执行后面的部分。
//为什么函数执行成功则不执行后面的语句?这里没有控制的语句吧!
//难道是execlp函数里面设置有?还是C语言的一种语法
//err_ret("couldn't execute: %s \n'",buf);
printf("couldn't execut: %s \n",buf);
exit(127);
}
//父进程
//printf("开始终止进程 Process ID: %s\n",getpid());
if((pid = waitpid(pid,&status,0)) < 0){
//err_sys("waitpid error");
printf("waitpid error \n");
}
printf("%%");
}
exit(0);
}