Inetd / xinetd 在 cygwin 下无法工作,为什么?

Inetd / xinetd 在 cygwin 下无法工作,为什么?

我正在尝试使用 xinetd(或 inetd)和 netcat 来充当 TCP 代理。此设置在 Linux 上运行正常。

在 Cygwin 下,无论是作为服务还是从 Cygwin 命令行,(x)inetd 都无法打开 netcat,并出现错误“没有此文件或目录”。

我尝试指定/usr/bin/nc/usr/bin/nc.exe/cygdrive/d/cygwin/usr/bin/nc.exed:\cygwin\bin\nc.exe以及大量其他正斜杠、反斜杠、Windows 路径和 Cygwin 路径的组合。无论如何,我得到的都是errno 2, no such file or directory

有什么想法吗?我需要尽快完成这项工作。

编辑:我认为这可能与它存在(蹩脚的硬编码?)有关,d:\cygwin但我在打开了 cygwin 的机器上对其进行了测试C:\,那里也存在问题。

答案1

xinetd 与其他任何 unix 导入的进程一样,可以查看 unix 目录。因此,您无需使用任何 windows 目录格式,尤其是反斜杠变体。

第二: cygwin 将大多数二进制文件安装到 中/bin,而不是 中/usr/bin/bin/nc.exe不在您列出的尝试之间。

如果某些东西通过命令行使用完整路径工作,那么它也需要通过 xinetd 工作。

除此之外,还有另一个潜在的麻烦来源。这是配置 xinetd 的常见语法问题。您的服务应如下所示:

service service_name {
 ...
        server          = /path/to/your/binary
        server_args     = --your --args
 ...
}

...因此,对于“服务器”设置,你不应该插入任何论点!它们需要插入到上面的“server_args”中。如果你犯了这个错误,你就会得到上述文件未找到的问题。

相关内容