我正在尝试使用 xinetd(或 inetd)和 netcat 来充当 TCP 代理。此设置在 Linux 上运行正常。
在 Cygwin 下,无论是作为服务还是从 Cygwin 命令行,(x)inetd 都无法打开 netcat,并出现错误“没有此文件或目录”。
我尝试指定/usr/bin/nc
、/usr/bin/nc.exe
、/cygdrive/d/cygwin/usr/bin/nc.exe
、d:\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”中。如果你犯了这个错误,你就会得到上述文件未找到的问题。