6

I am writing a Java application that talks to a C++ application using named pipes. When the C++ application dies, the Java gets SIGPIPE and the Java application dies.

On C/C++ I know how to catch that signal and ignore it. Is it possible to do something similar on Android/Java?

4

1 回答 1

1

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

编辑:

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

http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-in-java
于 2012-12-19T07:51:42.730 回答