1.5 从标准输入读命令并执行

proc/shell1.c

 1 #include "apue.h"
 2 #include <sys/wait.h>
 3 int
 4 main(void)
 5 {
 6     char    buf[MAXLINE];    /* from apue.h */
 7     pid_t    pid;
 8     int        status;
 9     printf("%% ");    /* print prompt (printf requires %% to print %) */
10     while (fgets(buf, MAXLINE, stdin) != NULL) {
11         if (buf[strlen(buf) - 1] == '\n')
12             buf[strlen(buf) - 1] = 0; /* replace newline with null */
13         if ((pid = fork()) < 0) {
14             err_sys("fork error");
15         } else if (pid == 0) {        /* child */
16             execlp(buf, buf, (char *)0);
17             err_ret("couldn't execute: %s", buf);
18             exit(127);
19         }
20         /* parent */
21         if ((pid = waitpid(pid, &status, 0)) < 0)
22             err_sys("waitpid error");
23         printf("%% ");
24     }
25     exit(0);
26 }

 

posted @ 2014-07-15 09:17  paullam  阅读(147)  评论(0编辑  收藏  举报