如何打印命令行命令的一部分
Posted
技术标签:
【中文标题】如何打印命令行命令的一部分【英文标题】:How to printf part of command line command 【发布时间】:2012-04-28 06:21:44 【问题描述】:您好,我目前正在尝试在运行程序时打印命令行的某个部分。我目前按如下方式运行我的程序
zcat gcc | sim
我想要完成的是将命令行的“gcc”部分打印到单独的文件中。有什么办法可以做到这一点。感谢您的帮助
我忘了说这是用 c 而不是 C++
【问题讨论】:
伙计,谷歌主要函数参数 [argc, argv
]
它没有作为我已经尝试过的主函数参数传递
对不起,你能不能再解释一下,你想做什么?
zcat gcc 解压程序sim读入并分析的文件gcc。所以我如上所述调用我的程序。在我的程序结束时,我打印出一组结果,并想打印出所使用的文件的名称,在这种情况下是 gcc。但是,我尝试过的所有内容都只是在 gcc 文件的第一行而不是显式命令行中读取的。
【参考方案1】:
“sim”程序只知道它有来自标准输入的数据。它不知道是什么将数据传递给标准输入 - 它可能是另一个程序,或者重定向的输入,或者来自设备。
从 'sim' POV 中,只有来自标准输入的数据。
如果您可以保证您将始终通过管道从另一个进程接收数据,您可以开始寻找与“sim”进程匹配的进程标头,并从然后从相关进程中提取进程信息。但是,我怀疑这超出了您的意愿。
【讨论】:
有什么方法可以读取命令行中输入的内容 没有“简单”的方法。有一个艰难的方法,这将涉及您通过进程树拖网查找关联的进程来馈送 sim 的标准输入,然后计算出相关进程的参数。坦率地说,对于您想要实现的目标;我只是将您的“sim”程序扩展为具有指定要读取的文件的参数。这样你就可以从 main() 的参数向量中获得文件的名称。【参考方案2】:您正在将zcat
的输出(通过管道)传递给您的程序,它不知道传递给zcat
的参数的详细信息。
不过,您可以将其作为输入流的一部分显式传递,
(echo 'zcat gcc'; zcat gcc ) | sim
但这是一个黑客。如果您打算运行您的 只能以这种方式编程。
【讨论】:
以上是关于如何打印命令行命令的一部分的主要内容,如果未能解决你的问题,请参考以下文章