一个简单地Shell-like 的实现

下面的一个程序是shell的简单实现,虽然简单,但是原理是相同的。请仔细体会。


//shell-like function

#include "apue.h"

#include <sys/wait.h>

int main(int argc, char *argv[])

{

        char buf[MAXLINE];

        pid_t pid;

        int status;


        printf("%% ");

        while (fgets(buf, MAXLINE, stdin) != NULL)

        {

                if (buf[strlen(buf)-1] == '\n')

                {

                        buf[strlen(buf)-1] = 0;

                }


                if ((pid  = fork()) < 0)

                {

                        printf("err\n");

                }

                else if (pid == 0) /* child */

                {

                        execlp(buf, buf, (char *)0);

                        exit(127);

                }


                /*  parent */

                if ((pid = waitpid(pid, &status, 0)) < 0)

                {

                        printf("error\n");

                }


                printf("%% ");

        }

        return(0);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值