gpt4 book ai didi

java - 使用 ProcessBuilder 停止从 Java 扫描树莓派中的 BLE 加密狗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:17 25 4
gpt4 key购买 nike

我在树莓派中有一个 Java 应用程序,我必须在其中控制 USB 低功耗蓝牙 (BLE) 软件狗。我想在特定时间内扫描设备。在 shell 中,我将调用“sudo hcitool lescan --continuous”并按 ctrl-c 中止扫描。

现在在 java 中我使用 ProcessBuilder 启动 bash 并将上面的命令写入 OutputStream:

ProcessBuilder builder = new ProcessBuilder("/bin/bash");
Process proc = builder.redirectOutput(Redirect.PIPE).start();
OutputStream stdin = proc.getOutputStream();
String command= "sudo hcitool lescan --continuous\n";
stdin.write(script.getBytes());

这有效,我可以获得 hcitool 的输出重定向到的进程的 InputStream。但是如何停止扫描呢?将 0x03 写入 OutputStream 将不起作用,因为据我所知,ctrl-c 不仅是值 0x03,而且还是一个特殊信号 SIGINT。

那我该怎么做呢?是否可以按照我开始扫描的方式停止扫描,还是必须选择其他方式?

最佳答案

如果有人感兴趣,我目前的解决方案如下(我对它不是很满意,但没有时间在那个问题上工作更长的时间):

我创建了一个终止进程的 bash 脚本:

#!/bin/sh
VAR=$(ps -a | grep hcitool | awk {'print $1'})
sudo kill -int $VAR

然后我从 java 中执行它。

关于java - 使用 ProcessBuilder 停止从 Java 扫描树莓派中的 BLE 加密狗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196426/

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