假设我用下面的代码编写了一个程序:
int main(int argc, char** argv)
现在,通过检查的内容,知道向其传递了哪些命令行参数argv
。
程序可以检测参数之间有多少空格吗?就像我在bash中键入这些内容一样:
ibug@linux:~ $ ./myprog aaa bbb
ibug@linux:~ $ ./myprog aaa bbb
环境是现代Linux(例如Ubuntu 16.04),但是我想答案应该适用于任何符合POSIX的系统。
谈论“参数之间的空间”是没有意义的。那是壳的概念。
Shell的工作是获取整行输入,并将它们形成为参数数组以启动命令。这可能涉及解析带引号的字符串,扩展变量,文件通配符和代字号表达式等。该命令以标准exec
系统调用开始,该系统调用接受字符串向量。
存在其他创建字符串向量的方法。许多程序使用预定的命令调用分叉并执行它们自己的子进程-在这种情况下,永远不会出现“命令行”之类的东西。类似地,当用户将文件图标拖放到命令小部件上时,图形(桌面)shell可能会启动一个过程-再次,没有文本行在参数之间添加字符。
就所调用的命令而言,在shell或其他父/前体进程中发生的事情是私有且隐藏的-我们仅看到标准C指定main()
可以接受的字符串数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句