鱼C论坛

 找回密码
 立即注册
查看: 1237|回复: 1

how to write a shell supporting command line with arguments

[复制链接]
发表于 2023-9-21 21:28:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
How to write a shell supporting command lines with arguments, such as ls -al, cat test.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-21 21:29:05 | 显示全部楼层
编写支持带参数的shell,例如ls -al,cat test.txt。

要编写支持带参数的shell,需要使用系统调用execvp()函数。execvp()函数可以在当前进程中执行一个新的程序。

以下是一个示例代码:
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("Usage: %s command [args...]\n", argv[0]);
        return 1;
    }

    execvp(argv[1], &argv[1]);

    perror("execvp failed");
    return 1;
}

在这个示例中,我们首先检查命令行参数的数量。如果没有足够的参数,则打印出使用方法并返回1。否则,我们使用execvp()函数来执行第一个参数指定的命令,并传递剩余的参数作为命令的参数。如果execvp()函数返回,说明出现了错误,我们使用perror()函数输出错误信息,并返回1。

使用这个示例代码,我们可以执行任何命令,并传递任何参数。例如,我们可以执行ls -al命令:
$ ./myshell ls -al

我们也可以执行cat test.txt命令:
$ ./myshell cat test.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 23:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表