在Android中处理Unix信号

elc*_*uco 6 unix android signals pipe

我正在编写一个使用命名管道与C ++应用程序通信的Java应用程序。当C ++应用程序死亡时,Java获得SIGPIPE,而Java应用程序死亡。

在C / C ++上,我知道如何捕获该信号并忽略它。是否可以在Android / Java上执行类似的操作?

elc*_*uco 1

看来这实在是不可能的。可用的最佳解决方案是添加关闭挂钩并“优雅地”重新启动应用程序,如下所述:

编辑:

我需要这个,因为(当时)我有 JNI 代码,我在上面打开了 FD 并对其进行读/写。FD 被打开到一个命名套接字(一个 Unix 管道),当管道的远程端(在我的例子中是一个守护进程,或 Android C/服务)关闭连接(或死亡)时,你的一端将收到一个信号。这并不总是好的。恕我直言,处理这个问题的最佳方法应该是使用来自良好的旧纯 C 代码的信号处理程序,然后吞下它(否则 - 您应该通知应用程序的 Java 端)。

http://stackoverflow.com/questions/2541597/how-to-graceously-handle-the-sigkill-signal-in-java