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

news/2024/7/24 14:32:38 标签: linux, 运维, 服务器

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 命令使用了,在终端里面,感觉实现原理都是通过系统调用实现的


http://www.niftyadmin.cn/n/5319603.html

相关文章

Cacti 监控工具 | 因严重 SQL 注入漏洞而受到攻击

攻击者可以利用该问题访问Cacti数据库中的所有数据&#xff1b;并且&#xff0c;当与先前的漏洞链接时&#xff0c;它会启用 RCE。 用于监控网络性能的基于 Web 的 Cacti 开源框架中存在一个严重漏洞&#xff0c;该漏洞为攻击者提供了泄露 Cacti 整个数据库内容的方法&#xf…

【标准解读】物联网安全的系统回顾

1 引言 内容提要&#xff1a;物联网&#xff08;IoT&#xff09;包括嵌入传感器、软件和数据处理技术的物理对象网络&#xff0c;这些物理对象可以通过互联网与其他设备和系统建立连接并交换数据。物联网设备被融入到各种产品中&#xff0c;从普通的家庭用品到复杂的工业电器。…

Excel地址

解题思路&#xff1a; 根据题中歪歪和笨笨的话可以有两种解法。 1.输入的数为多大&#xff0c;则循环1多少次&#xff0c;当值为27时就要进行进位操作。这时要分情况讨论。 当集合中元素为一个时&#xff0c;如26&#xff0c;则需要变为1 1&#xff0c;集合元素个数加一。 当…

PMP与NPDP证书:哪个更权威?哪个含金量更高?

&#x1f3af;PMP和NPDP都具有权威性&#xff0c;但它们在领域和目标人qun方面略有不同。 1️⃣PMP在项目管理领域有较高的国际认可度 &#x1f48e;PMP是由项目管理协会(PMI)颁发的项目管理专业认证&#xff0c;具有较高的国际认可度。 PMP证书持有者通常具备严谨的项目管理知…

3D PDF查看器HOOPS Publish助力Smartscape拓展日本AEC市场!

​ 公司&#xff1a;Smartscape Co., Ltd. 行业&#xff1a;建筑、工程和施工(AEC) 软件&#xff1a;适用于AEC行业的3D PDF工具 软件开发工具包&#xff1a;Hoops Publish HOOPS_3D软件开发工具_HOOPS中文网慧都科技是HOOPS全套产品中国地区指定授权经销商&#xff0c;提供3D…

基于python的室内老人实时摔倒智能监测系统(康复训练检测+代码)

概述 导入所需的库&#xff0c;包括cv2、和numpy。 定义了一个用于计算角度的函数calculate_angle(a, b, c)&#xff0c;其中a、b和c是三个关键点的坐标。 初始化姿态检测和绘图工具。 打开并读取视频文件。 -摔倒检测&#xff08;fallen&#xff09; 循环遍历视频的每一帧…

Hive数据定义(1)

hive数据定义是hive的基础知识&#xff0c;所包含的知识点有&#xff1a;数据仓库的创建、数据仓库的查询、数据仓库的修改、数据仓库的删除、表的创建、表的删除、表的修改、内部表、外部表、分区表、桶表、表的修改、视图。本篇文章先介绍&#xff1a;数据仓库的创建、数据仓…

【2024系统架构设计】 系统架构设计师第二版-层次式架构设计理论与实践

目录 一 表现层框架设计 二 中间层架构设计 三 数据访问层设计 四 数据架构规划与设计 五 物联网层次架构设计 六 层次式架构案例分析