¿Hay algún mecanismo para enviar eventos/señales asíncronas a través de JNI de C a Java o viceversa? Necesito atrapar una señal/evento de C a Java.Cómo enviar eventos/señal de C a Java en JNI
Respuesta
Suena un poco complicado, ya que se supone que JNI es unidireccional: el código Java puede invocar un método nativo, que por supuesto puede volver a llamar al código Java, pero no puede iniciar el proceso.
Pero no es imposible, creo que la solución más directa es tener una llamada nativa que bloquee hasta que se reciba la señal.
Otra opción sería escribir un agente JVMTI, que puede interferir activamente con una VM en ejecución.
Pero si hablamos de señales UNIX, puede manejarlas con la API no pública (por lo tanto no está garantizada en el futuro y específica de Sun VM) pero existe la clase sun.misc.Signal
.
Puede llamar a un método Java desde el código C. Ver la documentación de JNI. Consulte también http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/method.html.
- 1. Enviar JNI C stderr/stdout a log4j
- 2. Devolver una clase C++ a Java a través de JNI
- 3. JNI: pasando bytes de C++ a java
- 4. JNI cómo acceder a Java Object (Integer)
- 5. convertir vector a jobject en C++/JNI?
- 6. Datos binarios de JNI Stream de C++ a Java
- 7. pasar punteros entre C y Java a través de JNI
- 8. Pasando punteros entre C y Java a través de JNI
- 9. Java JNI: ¿asociar recursos asignados en C con objetos java?
- 10. C++ Java wrapper construction con JNI
- 11. JNI Invocation API - NoClassDefFoundError (C/Java)
- 12. Fuerza Java para llamar a mi C++ destructor (JNI)
- 13. llamando a la función java desde c usando jni
- 14. JNI Llamadas diferentes en C vs C++?
- 15. Acceso a un objeto Java en un objeto Java en C usando JNI
- 16. Fuga de Java JNI en el proceso C++
- 17. JNI - ¿Cómo hacer una devolución de llamada desde C++ o C a Java?
- 18. Cómo usar Eclipse para depurar código JNI (Java y C++)
- 19. Pasar tipos de datos de Java a C (o viceversa) usando JNI
- 20. ¿Cómo devolver una matriz de JNI a Java?
- 21. ¿Cómo depurar la biblioteca JNI/C?
- 22. Cómo devolver la matriz int de Java a JNI
- 23. Mac + jni + java
- 24. Utilice C++ con JNI
- 25. Java genéricos y JNI
- 26. Transferencia de cadenas de doble byte (WCHAR) de C++ a Java a través de JNI
- 27. Transmitir un tipo largo de C++ a un jlong JNI
- 28. ¿Cómo transferir una estructura C a java mediante el uso de JNI?
- 29. El paso de un byte [] en Java a una función en C a través de JNI: cómo utilizar jarraybyte
- 30. FFMpeg jni en Android?
Ya estoy usando esto, pero lo que realmente necesito es algo, donde puedo bloquear algún recurso en Java y luego puedo enviar un evento/señal para desbloquearlo y que debe ser asincrónico. –
Sin duda, puede obtener un puntero de entorno en C junto con un identificador de objeto, que luego puede ser notificado simplemente, siempre que el puntero de entorno siga siendo válido después de la invocación de la función Java ->. –