让我们说我有一个名为myProgram的可执行文件,它从输入文件中读取并写入输出文件。该程序的命令行如下所示:
./myProgram -o outputfile inputfile
-o
选项的参数指定输出文件名;如果不存在这样的文件,则程序将创建它。
我想知道的是我是否可以多次执行myProgram,将一个实例的输出传递给下一个实例的输入。例如,
./myProgram inputfile | ./myProgram -o outputfile
是否有可能实现这一目标,如果是这样,我还需要实施什么?执行电话和分叉?只是简单的读写调用?
答案 0 :(得分:3)
管道通过将多个程序的stdin和stdout链接在一起来工作。
您需要修改程序才能从stdin读取并写入stdout而不是特定文件。然后你可以使用管道。
答案 1 :(得分:2)
简短的回答是:是的,你可以这样做。
但是,您的程序应该从stdin读取其输入并写入stdout。这意味着,将不再需要作为输入或输出文件的参数。
./myProgram < inputfile > outputfile
或者,为了说明链接,
./myProgram < inputfile | ./myProgram > outputfile
如果没有指定输入文件,广泛传播的组合是从stdin读取,如果没有outputfile 或 outputfile&#34; - &#34;则写入stdout。在命令行传递。这提供了最大的灵活性。
话虽如此,如果链接同一程序的多个实例是明智的,当然主要取决于该程序做什么。例如,对于分类程序,这当然没有多大意义;)
答案 2 :(得分:1)
与命令一样运行程序的两个实例 myProgram 绝对没有问题
./myProgram inputfile | ./myProgram -o outputfile