我希望我的 shell 能够运行
cat file.txt
以及
ls -l
我不确定如何执行此操作,因为使用 cat
时,第二个参数始终是文本文件,但是,使用 ls
等命令时,第二个参数是不,所以我必须以不同的方式执行它。我不知道如何正确处理这两种情况。
最佳答案
您的 shell 应该为第一个参数寻找匹配的二进制文件,并将所有后续参数作为字符串传递给第一个程序。您的 shell 不负责确定参数的含义,由它运行的程序负责。
您的 shell 应该调用 fork(),然后在子进程中(fork() 的返回值 == 0),它将调用不同的 exec 命令之一来运行用户指定的程序。同时,原始进程正在等待 fork 的子进程使用 waitpid() 完成。
http://linux.die.net/man/3/exec
您会看到其中许多都采用字符指针数组作为参数。您将把后续参数传递给执行的二进制文件,以便它读取并解析自身。
关于c - 如何在 C 语言的 shell 中执行带有多个参数的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16630827/