zoukankan      html  css  js  c++  java
  • shell-like program(shell程序的基本实施部分)

    直接上代码:

    #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] == '
    ') {
                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,我们仅仅能在当前工作文件夹中执行。

  • 相关阅读:
    【算法】 冒泡排序
    【算法】 插入排序
    【算法】 斐波那契数列
    【C#】 RBAC 权限框架
    【jQuery】 实用 js
    【jQuery】 Ajax
    【jQuery】 常用函数
    【jQuery】 资料
    【jQuery】 效果
    Linaro/Yocto/Openwrt
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6994399.html
Copyright © 2011-2022 走看看