【问题标题】:Suspend a child process spawned by java挂起由java产生的子进程
【发布时间】:2013-01-09 23:42:59
【问题描述】:

我有一个 java 程序,它使用Runtime.exec() 生成一个子进程,但我需要能够以编程方式挂起它,然后从它停止的地方重新开始运行。 Java Process 对象似乎没有提供任何方法来做到这一点。有谁知道我如何做到这一点?

谢谢

【问题讨论】:

  • 假设有办法做到这一点,这似乎很危险。您如何知道您的子进程将在哪个执行点停止?子进程是java应用程序吗?也许改用某种 IPC(进程间通信)机制?
  • 子进程是对clasp的调用:cs.uni-potsdam.de/clasp

标签: java spawn suspend child-process


【解决方案1】:

Java 不是低级语言。因此,不支持与操作系统的某些交互。

唯一的解决方案是让您使用可以真正与操作系统(如 C/C++)一起使用的语言创建代码,并使用 JNI 从 java 调用它。

【讨论】:

    【解决方案2】:

    在 UNIX 下,您可以 Runtime.exec + kill -STOP 和 -CONT 挂起和恢复进程,而无需使用 JNI。

    【讨论】:

    • 虽然你是绝对正确的,但我只想说 Java 是独立于环境的。使用特定于操作系统的命令将带走 java 的主要功能。
    • 这是个好主意。谢谢。我意识到 Java 是关于兼容性的,但我使用它是因为我喜欢类型安全、良好的支持工具(如 eclipse)和文档齐全的综合标准库
    • 哦等等,我如何找到进程号?
    • @AdelBoutros 您必须找到挂起和恢复进程的命令行实用程序。也许是 sysinternals 之一。
    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多