7、防写一个shell 命令解释器

本文介绍了如何用C语言编写一个简单的命令解释器,通过strtok函数解析用户输入的命令和参数,以及如何通过系统调用执行类似ls的命令。实验结果显示,可执行文件放置在/bin/test1后,用户可以在终端中使用它。
摘要由CSDN通过智能技术生成

1、代码部分

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_INPUT_LENGTH 100

void parse_command(char *command) {
    // 用于存储解析后的命令和参数
    char cmd[MAX_INPUT_LENGTH];
    char args[MAX_INPUT_LENGTH];

    // 将输入的命令拷贝到新的字符串中,以便使用strtok
    strcpy(args, command);

    // 解析命令
    char *token = strtok(args, " ");
    if (!token) {
        printf("无效的命令\n");
        return;
    }
    strcpy(cmd, token);

    // 解析参数
    token = strtok(NULL, "");
    if (token) {
        printf("命令: %s, 参数: %s\n", cmd, token);
    } else {
        printf("命令: %s, 无参数\n", cmd);
    }

    // 根据解析后的命令执行相应的操作
    if (strcmp(cmd, "echo") == 0) {
        printf("%s\n", token);
    } else if (strcmp(cmd, "quit") == 0) {
        exit(0);
    } else {
        printf("未知命令: %s\n", cmd);
    }
}

int main() {
    char input[MAX_INPUT_LENGTH];

    printf("简单命令解释器 - 输入 'quit' 退出\n");

    while (1) {
        // 获取用户输入
        printf("> ");
        fgets(input, sizeof(input), stdin);

        // 移除换行符
        size_t len = strlen(input);
        if (len > 0 && input[len - 1] == '\n') {
            input[len - 1] = '\0';
        }

        // 解析并执行命令
        parse_command(input);
    }

    return 0;
}

2、实验结果在这里插入图片描述
3、把可执行文件放到 /bin/test1 就可以像ls 命令使用了,在终端里面,感觉实现原理都是通过系统调用实现的

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值