如何向 Java 进程发送中断键序列?
我有一个 Java Process 实例及其关联流的句柄。 这是一个控制台程序。 我想模拟一个中断序列。 在 Windows 上,这是 Ctrl-C。 如果没有本地人,这可能吗?
这样做的原因是:控制台程序本身就是一个命令行控制台,控制另一种语言的虚拟机。 用户可以从此控制台程序运行另一个程序。 当程序运行时,中断序列将中断底层程序的执行并导致控制台程序进入调试模式。
我们正在 Java 包装这个控制台调试器,以便可以通过 IDE (Eclipse) 驱动它。 发送中断序列相当于在 Eclipse 调试器中按“挂起”键。
I've got a handle to a Java Process instance and its associated streams. It's a console program. I'd like to simulate a break sequence. On Windows this is Ctrl-C. Is this possible without natives?
The reason for doing this: the console program is a command-line console itself, controlling a virtual machine for another language. The user can run another program from this console program. While a program is running, the break sequence will interrupt execution of the underlying program and cause the console program to go into debug mode.
We are Java-wrapping this console debugger so that it can be driven via an IDE (Eclipse). Sending the break sequence will be the equivalent of pressing "suspend" in the Eclipse debugger.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能想了解一下 SendSignal。 这将向 Java 进程发送 ctrl-Break。 我假设您的目标是导致堆栈转储,CTRL-C(信号 3 又名 SIGQUIT)将为正在运行的 Java 进程执行此操作?
You probably want to look into SendSignal. This will send a ctrl-Break to a Java Process. I assume your goal is to cause a stack dump, which a CTRL-C (signal 3 aka SIGQUIT) will do for a running Java process?