杀死子进程开始了新终端



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

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

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

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

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

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

由于我想杀死阻止我声明的 rfcomm 通道的进程,并且不使用其他通道,也不关心是否其他与 rfcomm 相关的内容被杀死所以我只是在关闭钩子中Runtime.getRuntime().exec("sudo pkill rfcomm");运行该行。这对我有用。

如果只杀死一个特定的进程很重要,可以做这样的事情:如何给出通过管道杀死的参数

相关内容

  • 没有找到相关文章