![]() |
1
8
我相信ctrl-c被shell捕获并转换成信号( SIGINT )它被发送到底层进程(在本例中是生成的进程)。 所以我认为您需要获取进程ID,然后向该进程发送适当的信号。 This question 似乎非常相似,并指出各种资源的使用。 |
![]() |
2
5
经过无数次的试验,我找到了一个我现在喜欢的解决方案。 基本上,它是这样工作的: 1。获取您启动的进程的进程ID 2.第2条。将此PID传递给略微修改过的sendsignal.exe版本,该版本发送ctrl-c而不是ctrl break 这两个步骤并不是完全笔直向前,而是接近。 1。你需要有个性签名。Java没有提供任何本地方式来获取它。 有许多线程在讨论如何做到最好。 我决定在这里输入一个您现在需要的名称(请参见下面代码中的getProcessID())。 对于2.您需要有一个将ctrl-c发送到给定PID的工具。同样,Java不这样做。 有不同的方法可以做到这一点(例如,在Python中使用包装器等),但所有方法都有点复杂。我发现最简单的方法是使用.exe文件来完成这项工作。为此,我修改了sendsingal.exe。您可以在这里获得源代码:1。然后,简单地用“c”替换所有出现的“break”(也用小写字母)并重新编译。 将EXE重命名为StEnsialSalc.exe,并将其放在启动Java的子文件夹EXT中。然后运行下面的代码并愉快地调用,例如sendctrlc.sendctrlc(“howeveryourprogrammiscall.exe”)。
附言:我想在这里附上sendsignalc.exe,但我不认为我被允许。无论如何,如果您有一个正在运行的cpp编译器,那么这些更改是简单而直接的。 |
![]() |
3
1
切换到Java 9并节省时间,
|
![]() |
4
0
你可以终止
希望这有帮助! |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |