Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Объединение в цепочку сигнала

Java 2 SDK, Standard Edition, (JDK) v1.4 содержит новое объединяющее в цепочку сигнал средство. Объединение в цепочку сигнала позволяет Платформе Java лучше взаимодействовать с собственным кодом, который устанавливает его собственные обработчики сигнала. Средство работает и над Солярисом и над платформами Linux.

Объединяющее в цепочку сигнал средство было представлено, чтобы исправить проблему с обработкой сигнала в предыдущих версиях Java HotSpot VM. До версии 1.4 Java HotSpot VM не позволил бы установленные приложением обработчики сигнала для определенных сигналов включая, например, SIGBUS, SIGSEGV, SIGILL, и т.д., так как те обработчики сигнала могли конфликтовать с обработчиками сигнала, используемыми внутренне Java HotSpot VM.

Объединяющее в цепочку сигнал средство предлагает следующее:

Предварительно установленные обработчики сигнала (A) поддерживаются посредством сохранения существующих обработчиков сигнала для сигналов, которые используются VM, когда VM сначала создается. Позже, когда любой из этих сигналов повышается и, как находят, не предназначается в Java HotSpot VM, предварительно установленные обработчики вызываются. Другими словами предварительно установленные обработчики "объединяются в цепочку" позади обработчиков VM для этих сигналов.

Объединяющее в цепочку сигнал средство также позволяет приложению соединять и загружать совместно используемую библиотеку libjsig.so перед libc/libthread/libpthread. Эта библиотека гарантирует, что вызовы, такие как signal(), sigset(), и sigaction() прерываются так, чтобы они фактически не заменили Java обработчики сигнала VM's HotSpot, если обработчики конфликтуют с уже установленными Java HotSpot VM (B). Вместо этого эти вызовы сохраняют новые обработчики сигнала, или "объединяют их в цепочку позади обработчиков VM-installed. Позже, когда любой из этих сигналов повышается и, как находят, не предназначается в Java HotSpot VM, предварительно установленные обработчики вызываются. libjsig.so не необходим, если (B) не требуется.

Использовать libjsig.so, любая ссылка это с приложением, которое создает/встраивает HotSpot VM, например:

cc -L <libjvm.so dir> -ljsig -ljvm java_application.c
или используйте переменную окружения LD_PRELOAD, например:
export LD_PRELOAD=<libjvm.so dir>/libjsig.so; java_application (ksh)

setenv LD_PRELOAD <libjvm.so dir>/libjsig.so; java_application (csh)
Вставленный signal()/sigset()/sigaction() возвращает сохраненные обработчики сигнала, не обработчики сигнала, установленные Java HotSpot VM, которые замечаются ОС.

Объединяющее в цепочку сигнал средство было представлено, чтобы адресовать Запрос на Улучшение номер 4381843.


Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами