Guard: Захват сигналов не работает в Windows

Созданный на 6 мая 2011  ·  3Комментарии  ·  Источник: guard/guard

Как обсуждалось здесь и здесь

Самый полезный комментарий

LOL, вот полный список поддерживаемых сигналов и задокументированные передовые методы работы с остальными. Веселиться! ^ _ ^;

Все 3 Комментарий

вы хотите сказать мне, что спецификация взаимодействия между операционными системами, производными от unix, не соблюдается операционной системой с историей, почти полностью отключенной от unix? Да, нет, звучит правильно. ;)

Насколько мне известно, сигналы Posix обычно недоступны под Windows. Официально поддерживаемая подсистема с разнообразным набором API-интерфейсов POSIX действительно существует, но, по-видимому, только в том случае, если вы приобретаете корпоративную или окончательную версию vista / win7. Это включает в себя возможность писать программное обеспечение, поддерживающее сигналы POSIX (но не автоматическую их поддержку). Черт, у предприятия Windows unix ... штука ... даже есть старый и, казалось бы, неподдерживаемый порт debian , нацеленный на него. Как это ужасно?

В любом случае, вернемся к рубину. Первоначальный порт был выполнен с использованием cygwin. Cygwin - это абсолютно массивный уровень совместимости с POSIX и UNIX, который жертвует производительностью, размером среды выполнения и функциональностью в ущерб совместимости. Однако он обеспечивает абсолютный комфорт unix на враждебной территории. Меня ничуть не удивило бы, если бы перехват сигналов работал нормально в Windows, если бы вы использовали Ruby на основе cygwin.

Первоначальный установщик Windows в один клик использовал Visual Studio 6, древний динозавр. Текущий установщик Windows в один клик использует mingw и msys. Ни один из них не поддерживает сигналы posix, но я не знаю больше, чем это. Я взглянул, увидел «gcc.bat» и «make.bat» и очень расстроился.

В стороне, ISO C99 действительно определяет небольшое количество сигналов non-posix, которые разработчики должны поддерживать, но единственные два, которые можно перехватить через обработчик выхода, - это SIGINT и SIGTERM (по крайней мере, согласно спецификации, и все мы знаем, как Microsoft любит соответствовать стандартам).

LOL, вот полный список поддерживаемых сигналов и задокументированные передовые методы работы с остальными. Веселиться! ^ _ ^;

Спасибо за ваше исследование, я думаю, нам нужно найти обходной путь и пропустить сигналы в окнах :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги