【问题标题】:Bash reading socket /dev/rfcomm0bash 读取套接字 /dev/rfcomm0
【发布时间】:2018-03-02 08:37:46
【问题描述】:

我正在处理通过我的 raspberry 的蓝牙套接字从我的 Android 应用程序获取的数据。

长话短说,我能够建立连接,发送数据(JSON 字符串)。当我在位于 /dev/rfcomm0 的套接字中进行 tail/cat 时,我可以读取数据,但是当我将其放入脚本中以不断检查文件是否有新数据时,我不明白如何自动停止读取套接字。我正在尝试将 3 写入 var input:

执行 3/dev/rfcomm0 3

但我实际上需要将接收到的 JSON 字符串发送到另一个程序。所以我需要在每次 JSON 字符串到达​​时停止读取,并使用 JSON 字符串开始最后一个过程。

我知道这对于开始读取套接字是正常的,但我一直在寻找一种停止读取的方法。

【问题讨论】:

    标签: bash sockets bluetooth disconnect


    【解决方案1】:

    你为什么会停止阅读?你似乎需要的是

    while read input ; do
        do_something_with "$input"
    done <&3
    

    这样,shell 会继续读取,并且对于每一行,您都可以将字符串发送到另一个程序。

    如果您的 other_program 读取标准输入,您可以考虑为此使用 fifo:

    mkfifo fifootje
    cat fifootje  | other_program &
    while read input ; do
        echo "$input" >>fifootje
    done <&3
    

    【讨论】:

    • 看起来不错。暂时没时间。如果问题解决了,我稍后会通知您。
    • 你是对的。当时我还没有足够的 bash 知识。了解基本文件和套接字之间的区别很重要。
    猜你喜欢
    • 2017-07-13
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2012-10-15
    • 2011-10-29
    相关资源
    最近更新 更多