2013-01-09 210 views
1

我有一个java程序,它使用Runtime.exec()产生子进程,但我需要能够以编程方式暂停它,然后从停止的地方再次启动它。 Java的Process对象似乎没有提供任何方式来做到这一点。有谁知道我会怎样做到这一点?暂停由java产生的子进程

谢谢

+2

假设有一种方法可以做到这一点,这似乎很危险。你怎么知道你的子进程将在什么执行点停止?该子进程是一个Java应用程序吗?也许使用某种IPC(进程间通信)机制呢? – OldProgrammer

+0

子进程是一个调用clasp:http://www.cs.uni-potsdam.de/clasp/ – dspyz

回答

0

在UNIX下,您可以使用Runtime.exec + kill -STOP和-CONT暂停和恢复进程,而不使用JNI。

+0

虽然你是绝对正确的,但让我只是说Java是独立的环境。使用特定于操作系统的命令将取消Java的主要功能。 –

+0

这是一个好主意。谢谢。我意识到Java是兼容性,但我使用它是因为我喜欢类型安全性,良好的支持工具(如eclipse)以及完备的全面标准库 – dspyz

+0

哦,等等,我如何找出进程号? – dspyz

2

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

唯一的解决方案是使用一种可以真正与OS等C/C++一起工作的语言来创建代码,并使用JNI从Java中调用它。

+0

你的意思是,JNI? – OldProgrammer

+0

@LeorA你是对的,修正了 –