gpt4 book ai didi

java - 杀死子进程在新终端内启动

转载 作者:太空狗 更新时间:2023-10-29 12:23:41 24 4
gpt4 key购买 nike

我有一个 java 程序,它生成一个新的子进程,它本身在一个新的终端窗口中执行一个命令:

Process proc = Runtime.getRuntime().exec("lxterminal -e sudo rfcomm watch "+ BLUETOOTH_CHANNEL);

rfcomm watch *CHANNEL* 在我的例子中通过蓝牙监视声明的 channel /linux 设备文件以获取传入数据。当连接被取消时,我希望稍后能够在同一设备文件上的程序中恢复它。由于 rfcomm watch 会阻止声明的设备文件,因此必须在同一命令再次运行之前将其关闭。这可以通过向进程发送 SIGTERM 来手动实现(Ctrl + c 在新生成的终端窗口中)。

我的问题是,当我执行 proc.destroy()proc.destroyForcibly() 时,似乎只有终端被杀死并且 rfcomm watch 仍在运行(这会导致再次尝试查看同一设备文件时出现错误消息)。 rfcomm watch 也仍然出现在 ps 下。

如何以编程方式终止新的终端窗口在其中运行的命令?

最佳答案

我找到了适合我的目的的解决方案/解决方法,但可能不适用于类似的问题。

因为我想杀死阻塞我声明的 rfcomm channel 的进程并且不要使用其他 channel 并且不关心是否有其他与 rfcomm 相关的东西被杀死,我只是在关闭 Hook 中运行 Runtime.getRuntime().exec("sudo pkill rfcomm"); 行。这对我有用。

如果只杀死一个特定进程很重要,可以这样做:How to give arguments to kill via pipe

关于java - 杀死子进程在新终端内启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49667572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com