Inetd / xinetd не работает под Cygwin, почему?
Я пытаюсь использовать xinetd (или inetd) с netcat для работы в качестве TCP-прокси. Эта настройка работает на Linux без проблем.
В Cygwin, либо в качестве службы, либо из командной строки Cygwin, inetd (x) не может открыть 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
...
}
...thus, to the "server" settings, your should'n insert any argument! They need to by inserted to the "server_args" above. If you commits this mistake, you will get exactly the file not found problems above.