Java进程挂起并继续

Java进程挂起并继续,java,linux,windows,process,suspend,Java,Linux,Windows,Process,Suspend,我正在寻找一种能够在Java上实现这一点的解决方案: 产生一个进程 挂起它(就像Linux中的kill-STOP一样) 继续一个挂起的进程(如Linux中的kill-CONT) 在运行时读取/写入它们的标准输入/输出管道 在(至少)Linux和Windows上工作 据我所知,Java标准只实现了第一个和第四个,但没有实现第二个,也没有实现第三个 我能做什么呢?没有从Java“直接”完成的方法 在每种情况下,您都需要执行一个外部程序或调用本机代码来执行Windows/Linux特定的操作 在L

我正在寻找一种能够在Java上实现这一点的解决方案:

  • 产生一个进程
  • 挂起它(就像Linux中的kill-STOP一样)
  • 继续一个挂起的进程(如Linux中的kill-CONT)
  • 在运行时读取/写入它们的标准输入/输出管道
  • 在(至少)Linux和Windows上工作
据我所知,Java标准只实现了第一个和第四个,但没有实现第二个,也没有实现第三个

我能做什么呢?

没有从Java“直接”完成的方法

在每种情况下,您都需要执行一个外部程序或调用本机代码来执行Windows/Linux特定的操作

在Linux上,您可以按照建议使用
kill

在Windows上,您可以调用
SuspendThread()
,也可以启动SysInternals工具“PsSuspend”。这里有一些信息可以帮助您:

如果您希望从Java调用本机代码,JNIWrapper可能会帮助您

此外,如果您需要生成的进程的PID,那么您可能还需要通过本机代码启动它们,因为Java不会提供它们的PID。

无法从Java“直接”执行

在每种情况下,您都需要执行一个外部程序或调用本机代码来执行Windows/Linux特定的操作

在Linux上,您可以按照建议使用
kill

在Windows上,您可以调用
SuspendThread()
,也可以启动SysInternals工具“PsSuspend”。这里有一些信息可以帮助您:

如果您希望从Java调用本机代码,JNIWrapper可能会帮助您


另外,如果您需要生成的进程的PID,那么您可能还需要通过本机代码启动它们,因为Java不会提供它们的PID。

您知道的还不够多。你可以用。您可以使用这个包。此外,您可以在java中执行shell命令,通过它您可以轻松地实现2和3。可能还有其他一些方法。该解决方案适用于线程。它对过程也有效吗?你知道的还不够多。你可以用。您可以使用这个包。此外,您可以在java中执行shell命令,通过它您可以轻松地实现2和3。可能还有其他一些方法。该解决方案适用于线程。它也适用于进程吗?那么,我不能像Spider Boris建议的那样使用wait/notify吗?不,wait/notify用于控制Java程序内的线程,而您希望控制外部进程。JNIWrapper似乎不是免费软件。是否有另一个仅包含免费技术的解决方案?自己编写本机Windows代码,即使用VisualC++快照版生成DLL。使用原始JNI从Java程序调用此DLL。那么,我不能像Spider建议的那样使用wait/notify吗?不,wait/notify用于控制Java程序内的线程,而您希望控制外部进程。JNIWrapper似乎不是免费软件。是否有另一个仅包含免费技术的解决方案?自己编写本机Windows代码,即使用VisualC++快照版生成DLL。使用原始JNI从Java程序调用此DLL。