c - 一个 C 程序演示 cmd.exe 和一个 linux shell 例如bash,定界参数?

标签 c windows linux command-line cmd

我听说 cmd shell 将整个内容传递给命令,然后标准 C 库将其分隔,同时考虑空格和引号。而在 Linux 中,只有 shell 可以做到这一点。

一个带有 while 循环的程序,显示 argsv[i] 显示它是如何定界的,但不显示 shell 做了什么,也没有显示 C 库做了什么。

任何人都可以指出或向我展示一个可以显示它的程序吗?

最佳答案

我想你想知道 shell 在 linux 中是如何工作的,对吗?我认为当我们在命令 shell 上键入任何内容时,shell 接收所有参数作为字符串格式的参数,shell 然后 fork+exec 二进制文件并将所有参数作为环境变量传递给新的二进制文件,然后将这些环境变量放入内核新进程的堆栈,稍后由进程作为 argc 和 argv[] 访问,但 c 库没有进行特殊处理。

关于c - 一个 C 程序演示 cmd.exe 和一个 linux shell 例如bash,定界参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157287/

相关文章:

linux - 如何在 linux 中使用 sendmail 命令发送电子邮件

linux - 按照 SVN 中的符号链接(symbolic link)

python - 以静态类型语言实现干净且类型安全的状态机?

c - htons() 在 Big-Endian 系统上做什么?

node.js - 删除 Windows 10 上的所有文件夹

c++ - MS 链接从 gnu make 失败,但从 cmd 行工作

php - 如何在 Amazon EC2 上创建子域?

c - C 中的二维数组

c - `(i) = 1` 在标准 C 中是非法的吗?

c++ - 在 Windows 上发送 Ctrl+C 到 QProcess