Manejo de señales unix en Android
Estoy escribiendo una aplicación de Java que habla con una aplicación de C ++ que utiliza canalizaciones con nombre. Cuando la aplicación C ++ muere, Java obtiene SIGPIPE y la aplicación Java muere.
En C / C ++ sé coger esa señal e ignorarla. ¿Es posible hacer algo similar en Android / Java?
- ParcelFileDescritor.createPipe (), aka pipe (2) y seguridad
- Android LocalServerSocket
- Android NDK mmap llamada roto en dispositivos de 32 bits después de actualizar a Lollipop
- cómo tratar con el puerto serie en android móvil?
- Cómo almacenar Lista de dispositivos adb en la red en php array
- No se puede crear una aplicación para Android con Gradle, excepto con sudo
- Cómo abrir una URL desde el terminal
- Tener alias en el modo no interactivo del shell de adb
- Cómo getconf CLK_TCK en Android
- Cómo usar unix pipes en Android
Parece que esto no es realmente posible. La mejor solución disponible sería agregar un gancho de cierre y "graciosamente" reiniciar la aplicación, como se describe aquí:
EDITAR:
Necesitaba esto porque (en ese entonces) tenía código de JNI en el cual abrí un FD y r / w a él. El FD se abrió a un socket con nombre (un tubo Unix), y cuando el lado remoto de la tubería (en mi caso un daemon o Android C / service) cierra la conexión (o muere), su lado recibirá una señal. Esto no siempre es agradable. IMHO el mejor para manejar esto debe ser el uso de un manejador de señal de buena vieja llanura-código C, y sólo tragarlo (de lo contrario – debe notificar el lado de Java de su aplicación).
http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-in-java