何时在Windows中使用命名管道?

Jad*_*ias 0 windows named-pipes

在*nix中,许多接受文件名作为参数的命令行应用程序也接受管道.例:

anApplication file.txt
Run Code Online (Sandbox Code Playgroud)

也适用

anApplication | anotherApplication arguments
Run Code Online (Sandbox Code Playgroud)

并且"anotherApplication"的结果被重定向到"anApplication",因为它是一个文件

我了解到相当于Windows的Windows是"命名管道".我想知道命令行应用程序是否必须知道命名管道才能理解它,或者接受文件作为参数的任何命令行应用程序是否可以使用命名管道.

180*_*ION 9

你已经倒退了.准确地说:

anApplication file.txt
Run Code Online (Sandbox Code Playgroud)

anApplication将以文件名file.txt作为第一个命令行参数运行.

anApplication | anotherApplication arguments
Run Code Online (Sandbox Code Playgroud)

它运行anApplication时没有命令行参数.标准输出被连接到在标准anotherApplication,其与运行arguments的命令行参数.这在Windows上与在Unix版本上完全相同.命名管道是完全不同的操作系统功能.

命名管道是一个看起来像文件的目录条目,但就像一个可以附加输出和输入的数据流.


Gre*_*ill 6

一个命名管道在Windows上比你在说什么一个非常不同的事情。命名管道实际上是帮助在 Windows 上构建服务器应用程序的工具,大致相当于“Unix 域套接字”。

在您的情况下,anApplication在这种情况下是否有效取决于应用程序在命令行上没有文件名的情况下执行时的反应。(我在谈论您的描述中的安排;正如另一个答案所指出的,命令行是向后的。)如果应用程序stdin在没有命令行的情况下从启动时读取,那么这种 shell 管道安排将起作用。相反,如果应用程序在没有文件名的情况下启动时打印帮助消息并退出,则此 shell 管道将无法工作。