您的位置:首页 > 其它

1-5 从标准输入读入命令并执行

2010-07-20 12:23 288 查看
#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 * fgets(char *s ,int size,FILE *stream)

(1)从标准文件流中,读入最多size-1 个字符,然后存入s指向的buffer之中。

(2)当遇到EOF 或 换行符 时 读取结束 . 返回空指针。

(3) 当每行读取结束之后,就存到buffer之中,然后会给buffer的最后一个字符后面存入/0 .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: