c - 如何在 C 语言的 shell 中执行带有多个参数的命令?

标签 c parsing shell command-line command-line-arguments

我希望我的 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/

相关文章:

棋盘问题

c - 程序一步步执行失败

c - 使用 scanf 只读第一个字符

parsing - MediaWiki 解析器函数 #if 用于未定义的模板参数

macos - 如何对名称以 '-' 开头的文件使用通配符?

linux - 将 stdout 和 stderr 恢复为默认值

c - 使用 c 打印目录的程序不工作,递归调用出现问题

c - 服务器程序卡在发送处

java - 使用 XStream 解析器解析无效的 XML 字符 - Java

sql - 使用来自 Oracle 数据库的 SQL 从 XML Clob 中提取数据