类shell程序的简化实现

#include "apue.h"
#include


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");
                else if(pid == 0)
                {
                        execlp(buf,buf,(char *) 0);
                        err_ret("couldn't execute:%s",buf);
                        exit(127);
                }


                if ((pid = waitpid(pid,&status,0)) < 0)
                        err_sys("waitpid error");
                printf("%% ");
        }
        exit(0);
}
~
~

"1_5.c" [New] 30L, 504C written



编译:

R*_*G:gcc -Wall -ggdb3 -o 1_5 1_5.c
In file included from apue.h:128,
                 from 1_5.c:1:
error.c: In function `err_doit':
error.c:106: warning: implicit declaration of function `vsnprintf'

error.c:108: warning: implicit declaration of function `snprintf'

run result:


R*_*G:./1_5
% ls
1_1.c    1_2      1_2.c    1_3      1_3.c    1_4      1_4.c    1_5      1_5.c    apue.h   error.c  ls_unix
% ls -l
couldn't execute:ls -l: No such file or directory
% pwd
/home/tingbinz/apue.2e/include/1
% exit
couldn't execute:exit: No such file or directory




你可能感兴趣的:(apue)