【问题标题】:Windows Named Pipe Support in Linux [closed]Linux中的Windows命名管道支持[关闭]
【发布时间】:2011-04-26 23:45:35
【问题描述】:

我正在研究一个需要在使用命名管道的旧 Windows 应用程序和在 Linux 服务器上运行的新服务之间进行进程间通信的项目。无法更改 Windows 应用程序。有谁知道是否有支持 Windows 命名管道的 Linux 库?或者更好的是,任何人都可以推荐他们用于此目的的库吗?

【问题讨论】:

  • 管道是本地通信系统,它不会扩展到网络......那么Linux系统应该如何访问Windows系统上的管道,根据定义必须是不同的系统(甚至虚拟机)?或者你想知道如何编写代理或类似的东西?
  • @DarkDust:Windows 命名管道通过网络命名空间导出。您可以使用正确的安全属性从另一台 Windows 计算机打开一个,并在管道名称前加上 WINS 名称。
  • Windows 命名管道与标准 Linux 命名管道的工作方式不同,并且可以跨网络工作。我在问是否有人在 Linux 中编写了一个库来支持 Windows 命名管道。
  • 最后我写了一个 Windows 代理服务,它在 Windows 管道和套接字之间桥接。

标签: c++ windows linux network-programming named-pipes


【解决方案1】:

Windows 和 Linux 命名管道是不同的动物。如果存在互操作解决方案,您将成为极少数用户中的一员。

您最好在 Windows 端编写一个代理来映射命名管道和套接字,并将其连接到 Linux 端的套接字。这为您在 Linux 端提供了一个有用的网络接口,并从图片中消除了可能是命名管道互操作的世界。

如果我这样做,我会尝试在 C#(托管代码)中生成一个简单的直通代理作为概念证明。如果吞吐量达不到标准,始终可以转换为本机代码 (Win32/C++)。有一些示例 C# 代码 here 可能是有用的参考。

这里是background on the nuances of Windows vs Linux named pipes。

【讨论】:

  • 谢谢。我想到了在 Windows 端编写代理的想法,但我遇到了在 Windows 服务器上安装任何东西的想法......
  • @MichaelB76 - 多么令人沮丧......希望在尝试进行 NP 互操作时对风险和成本进行充分论证的陈述可以为您带来争论。什么是 Windows 操作系统?一台机器,还是多台机器?
【解决方案2】:

我敢打赌 Samba/Winbind 包含高度相关的代码。不过,不确定它的可重用性如何。

【讨论】:

  • 我认为 Samba 套件包含一些有用的东西;不知道如何使用它。一些 samba 工具必须在内部连接到 NT 命名管道。
  • 正确。这里的关键是IPC$ 共享。此共享中的“文件”实际上是连接到文件服务器进程的命名管道。
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多