Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 终止子进程已在新终端中启动_Java_Linux_Process_Subprocess_Rfcomm - Fatal编程技术网

Java 终止子进程已在新终端中启动

Java 终止子进程已在新终端中启动,java,linux,process,subprocess,rfcomm,Java,Linux,Process,Subprocess,Rfcomm,我有一个java程序,它生成了一个新的子进程,它本身在一个新的终端窗口中执行一个命令: Process proc=Runtime.getRuntime().exec(“lxterminal-e sudo rfcomm watch”+蓝牙_频道) rfcomm watch*CHANNEL*在我的例子中,通过蓝牙查看声明的CHANNEL/linux设备文件以获取传入数据。当连接被取消时,我希望能够稍后在同一设备文件的程序中恢复连接。由于rfcomm watch会阻止声明的设备文件,因此在再次运行同一

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

Process proc=Runtime.getRuntime().exec(“lxterminal-e sudo rfcomm watch”+蓝牙_频道)

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

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


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

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

由于我想终止阻止rfcomm通道的进程,我声明了不要使用其他通道不关心是否终止了与rfcomm相关的任何其他通道,因此我只需运行行
Runtime.getRuntime().exec(“sudo pkill rfcomm”)。这对我有用

如果只终止一个特定进程很重要,那么可以这样做: