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 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, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами