Gibt es einen Mechanismus, um asynchrone Ereignisse / Signale über JNI von C nach Java oder umgekehrt zu senden? Ich muss ein Signal / Ereignis von C nach Java abfangen.
Es klingt etwas kompliziert, da JNI nur in eine Richtung gehen soll: Java-Code kann eine native Methode aufrufen, die natürlich in Java-Code zurückrufen kann, aber den Prozess selbst nicht initiieren kann.
>Aber es ist nicht unmöglich, ich denke, die einfachste Lösung ist ein nativer Anruf, der blockiert, bis das Signal empfangen wird.
Eine andere Option wäre, einen JVMTI-Agenten zu schreiben, der eine aktive VM aktiv stören kann.
Aber wenn wir über UNIX-Signale sprechen, können Sie dann mit der nicht öffentlichen API umgehen (daher nicht in der Zukunft garantiert und Sun VM-spezifisch), sondern sun.misc.Signal
Klasse.
Sie können eine Java-Methode aus C-Code aufrufen. Siehe die JNI-Dokumentation. Siehe auch Ссылка .