Я работаю над WinDRBD (https://github.com/LINBIT/windrbd) порт драйвера Linux DRBD для Microsoft Windows.
Мы хотим запустить помощник пользовательского режима в качестве службы Windows (DRBD иногда вызывает пространство пользователяприложения с call_usermodehelper (), который мы эмулируем с помощью демона, который получает эти запросы от драйвера ядра, запускает их и возвращает состояние выхода в ядро).
Когда мы запускаем демон в оболочке cygwin, всеработает нормально. Однако при запуске демона в качестве службы Windows кажется, что cygwin не может найти свой установочный каталог (на моих машинах это C: \ cygwin64).
Запись реестра (HKLM / Software / CygWin / setup)/ rootdir) указывает на правильное местоположение, но я не уверен, что он также доступен для службы Windows?
/ bin / sh не найден службой, однако / cygdrive / c / cygwin64/ bin / sh существует, поэтому, когда я запускаю оболочку с этим путем, она может запуститься (а также находит библиотеки DLL, необходимые для работы). Однако оболочка жалуется на:
bash.exe: предупреждение: не удалось найти / tmp, создайте!
, который определенно существует при обычном запуске cygwin.
Кто-нибудь когда-либо пытался запустить скомпилированный CygWin?EXE как служба Windows?Вот результат запроса sc windrbdum:
SERVICE_NAME: windrbdum
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
(гм для режима пользователя).
Спасибо за любые идеи,