相关疑难解决方法(0)

父母退出后如何使子进程死亡?

假设我有一个只产生一个子进程的进程.现在,当父进程因任何原因(正常或异常,通过kill,^ C,断言失败或其他任何原因)退出时,我希望子进程死掉.如何正确地做到这一点?


stackoverflow上的一些类似问题:


关于Windows的 stackoverflow的一些类似问题:

c unix linux fork process

199
推荐指数
13
解决办法
15万
查看次数

如何重新启动Java应用程序?

如何重新启动Java AWT应用程序?我有一个按钮,我附加了一个事件处理程序.我应该使用什么代码来重启应用程序?

我想做与Application.Restart()C#应用程序相同的事情.

java restart application-restart

92
推荐指数
8
解决办法
16万
查看次数

如何获得我刚刚在java程序中启动的进程的PID?

我已经开始使用以下代码进行处理

 ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "path");
 try {
     Process p = pb.start();       
 } 
 catch (IOException ex) {}
Run Code Online (Sandbox Code Playgroud)

现在我需要知道我刚刚开始的进程的pid.

java pid process processbuilder

66
推荐指数
7
解决办法
10万
查看次数

使用fork()创建的子进程是否会在父级被杀死时自动终止?

我正在使用fork()C/C++ 创建子进程.
当父进程结束(或由于某种原因被杀死)时,我也想要杀死所有子进程.
这是由系统自动完成的吗?或者我必须自己做?

谢谢.


预先存在的类似问题:

c++ linux fork process parent-child

37
推荐指数
1
解决办法
4万
查看次数

处理Java虚拟机中的信号

是否可以在Java虚拟机中处理POSIX信号?

至少SIGINTSIGKILL应该是完全独立于平台的.

java posix jvm signals process

12
推荐指数
1
解决办法
7149
查看次数

检测父进程何时退出

我将有一个父进程用于处理Web服务器重新启动.它将通知孩子停止收听新的请求,孩子会发信号通知家长已经停止收听,然后家长会发信号通知新孩子它可以开始收听.通过这种方式,我们可以完成不到100毫秒的停机时间以重启该级别(我也有一个零停机时间的孙子重启,但这并不总是足够重启).

在关闭时,服务管理器将终止父服务器.孩子如何发现父母已经结束?

使用子进程的stdin和stdout发送信号.也许我可以检测到stdin流的结束?我希望避免轮询间隔.此外,如果可能的话,我希望这是一个非常快速的检测.

process watchdog node.js

7
推荐指数
3
解决办法
1万
查看次数

Process.waitFor()是否使进程依赖于java父级?

通常,如果我通过以下方式创建进程:

Process proc = new ProcessBuilder("some_long_running_script.py").start();
Run Code Online (Sandbox Code Playgroud)

然后我的java程序完成,我可以看到脚本进程继续运行(如预期的那样)

但是,如果我然后添加代码:

proc.waitFor();
Run Code Online (Sandbox Code Playgroud)

然后在脚本完成之前杀死我的java程序,我可以看到脚本也死了(不像预期的那样).

这似乎是说"waitFor()"以某种方式将脚本进程与我的java进程合并,这是设计的吗?我似乎无法在文档中的任何地方看到它.

这可能是特定于操作系统吗 我在Mac Yosemite上运行

java

5
推荐指数
0
解决办法
146
查看次数

Java:如何在子进程中调用 prctl()

确保子进程在父进程终止时终止是很棘手的。我在 Linux 中从 Python 中找到了一个强大的解决方案即当父进程使用prctl(PR_SET_PDEATHSIG, SIGTERM). 考虑到prctl()来自 C 标准库,C 或 C++ 可能也是如此。

关于如何在 Java 中杀死子进程有几个问题,参见例如[1]。但是,我发现没有什么比使用prctl(). 如果父级收到 SIGKILL,或者他们需要修改子级代码,大多数解决方案都会失败。通过让操作系统为我们完成这项工作,无论父级发生什么,子级总是会被成功杀死,并且子级代码不需要修改。

如何调用prctl(PR_SET_PDEATHSIG, SIGTERM)从 Java ProcessBuilder 产生的子进程?

java linux libc

2
推荐指数
1
解决办法
761
查看次数