码迷,mamicode.com
首页 > 系统相关 > 详细

shell-like program(shell程序的基本实施部分)

时间:2015-08-16 10:48:08      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:unix   linux   shell   program   

直接上代码:

#include "apue.h"
#include <sys/wait.h>

int main(void)
{
    char    buf[MAXLINE]; /* form apue.h  4096 */
    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 while null */
        }

        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);
        }

        /* parent */
        if ((pid = waitpid(pid, &status, 0)) < 0) {
            err_sys("waitpid error");
        }
        printf("%% ");
    }

    exit(0);
}

很多时候不喜欢csdn这种代码显示,再贴上vim的

技术分享

测试:

技术分享


这个小程序的功能限制就是不能给命令传入参数,比如我们不能指定目录名给list,我们只能在当前工作目录中运行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

shell-like program(shell程序的基本实施部分)

标签:unix   linux   shell   program   

原文地址:http://blog.csdn.net/zyq522376829/article/details/47700151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!