catalpa-bungei 发表于 2023-9-21 21:28:52

how to write a shell supporting command line with arguments

How to write a shell supporting command lines with arguments, such as ls -al, cat test.txt

isdkz 发表于 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 \n", argv);
      return 1;
    }

    execvp(argv, &argv);

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


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

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

$ ./myshell ls -al


我们也可以执行cat test.txt命令:

$ ./myshell cat test.txt
页: [1]
查看完整版本: how to write a shell supporting command line with arguments