C 如何打印命令行命令的一部分

C 如何打印命令行命令的一部分,c,command-line-arguments,zcat,C,Command Line Arguments,Zcat,您好,我正在运行程序时尝试打印命令行的某个部分。我目前运行的程序如下 zcat gcc | sim 我试图完成的是将命令行的“gcc”部分打印到一个单独的文件中。有没有办法做到这一点。谢谢你的帮助 我忘了提到这是用c语言编写的,不是用c++编写的。sim'程序只知道它有来自stdin的数据。它不知道是什么将数据传递给stdin——它可能是另一个程序,或者重定向的输入,或者来自一个设备 从“sim”POV中,只有来自stdin的数据 如果您可以保证始终通过管道接收来自另一个流程的数据,您可以开始

您好,我正在运行程序时尝试打印命令行的某个部分。我目前运行的程序如下

zcat gcc | sim
我试图完成的是将命令行的“gcc”部分打印到一个单独的文件中。有没有办法做到这一点。谢谢你的帮助


我忘了提到这是用c语言编写的,不是用c++编写的。

sim'程序只知道它有来自stdin的数据。它不知道是什么将数据传递给stdin——它可能是另一个程序,或者重定向的输入,或者来自一个设备

从“sim”POV中,只有来自stdin的数据


如果您可以保证始终通过管道接收来自另一个流程的数据,您可以开始查找与“sim”流程匹配的流程标头,然后从关联流程中提取流程信息。但是,我怀疑这超出了您的意愿。

您正在将
zcat的输出(通过管道)传递给您的程序,它不知道传递给
zcat
的参数的详细信息。 您可以将其作为输入流的一部分显式传递

(echo 'zcat gcc'; zcat gcc ) | sim
但这是一个黑客。如果您计划运行您的
仅以这种方式编程。

Buddy,谷歌搜索主函数参数[
argc,argv
]它不是作为主函数参数传递的,我已经尝试过了。对不起,你能再次解释一下,你想做什么吗?zcat gcc解压缩程序sim读取并分析的文件gcc。所以我调用我的程序,如上所述。在我的程序结束时,我打印出一组结果,并希望打印出所使用的文件名,在本例中是gcc。但是,我尝试过的所有内容都只是读取gcc文件的第一行,而不是显式命令行。是否有某种方法可以读取命令行中键入的内容没有“简单”的方法。有一种很难的方法,它需要你拖网浏览进程树,找到相关的进程,为sim的stdin提供数据,然后计算出相关进程的参数。坦率地说,为了你想要实现的目标;我只是扩展你的“sim”程序,让它有一个参数,指定从哪个文件读取。这样就可以从main()的参数向量中获得文件名。