Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的SIGCHILD信号_Java_Signals - Fatal编程技术网

java中的SIGCHILD信号

java中的SIGCHILD信号,java,signals,Java,Signals,我使用java中的“Runtime.getRuntime().exec()”创建了一个子进程,并希望检测子进程何时退出。所以我想知道posix中是否有类似于“SIGCHILD”的信号?不,不准确。您可以调用Process.waitFor()等待进程退出。但是,如果您是从一个专用线程执行此操作,那么它将非常类似于信号处理程序。或者,更昂贵的方法是轮询Process.exitValue(),这将抛出异常,直到子进程实际退出。因为我想异步调用“exec()”,所以“wait”可能不适合我。我刚刚发现一

我使用java中的“Runtime.getRuntime().exec()”创建了一个子进程,并希望检测子进程何时退出。所以我想知道posix中是否有类似于“SIGCHILD”的信号?

不,不准确。您可以调用
Process.waitFor()
等待进程退出。但是,如果您是从一个专用线程执行此操作,那么它将非常类似于信号处理程序。或者,更昂贵的方法是轮询
Process.exitValue()
,这将抛出异常,直到子进程实际退出。

因为我想异步调用“exec()”,所以“wait”可能不适合我。我刚刚发现一个包'sun.misc.Signal'和'sun.misc.SignalHandler'可以帮助我解决这个问题。可以像“this:signal.handle(new signal(“INT”)、new SignalHandler()”这样创建一个信号处理程序,但java似乎不支持“sigchild”。要“异步调用
exec()
”,只需创建一个新的
Thread
并调用
exec())
从该
线程开始
线程
在结束之前可以自由等待进程退出。这是Java的做事方式。而且在任何情况下,
sun.*
层次结构中的类都依赖于实现,并且可能会发生更改--不应该在应用程序代码中使用它们。它们是用来支持JVM和API的内部实现,它们的设计没有考虑用户访问所需的灵活性、错误处理或稳定性。