【问题标题】:Sending Ctrl+C to a process向进程发送 Ctrl+C
【发布时间】:2012-12-13 09:13:08
【问题描述】:

我有一个Process 对象,我需要在给定的时间点终止它。 我尝试了 Process.destroy(),但这并没有有效地让进程释放它正在使用的端口,因此我无法使用它。 我需要做的就是向“进程”发送一个“Ctrl + C”,它已经写了一个关闭钩子,它负责释放任何资源。

我该怎么做。

我正在使用 Windows

【问题讨论】:

  • 您使用的是哪个操作系统?
  • 程序异常终止时并不总是调用关闭挂钩(取决于底层操作系统)。
  • 我也面临同样的问题,我已经在这里详细解释了:stackoverflow.com/questions/27942679/…你能指导我如何解决这个问题吗?有链接吗?

标签: java process


【解决方案1】:

依靠关闭挂钩进行常规操作是一种错误的方法。您必须将应用程序设计为提供自己的协议,通过该协议它可以接收关闭信号。这是编写可靠的多平台应用程序的唯一方法,其中“多平台”也意味着同一平台的不同版本。

【讨论】:

  • +1 您必须在假设与服务的连接可能随时终止的情况下编写协议。例如电源可能会失效。你应该尝试给你的协议一个优雅的断开,但你不能假设它会一直被使用。
  • 我也面临同样的问题,我已经在这里详细解释了:stackoverflow.com/questions/27942679/... 你能指导我如何解决这个问题吗?有链接吗?
【解决方案2】:

您可以使用 taskkill 发送命令,如 article 中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多