小编TJJ*_*TJJ的帖子

连续写入命名管道

我有一个涉及两个命名管道的问题似乎无法解决。基本上,我有两个无法控制的流程。他们通过命名管道 ( ) 进行通信mknod pipe p。进程一是 GPS 驱动程序,以 NMEA0183 格式输出消息。流程二是一个导航应用程序,它读取 NMEA0183 数据以从 GPS 获取位置和日期/时间。我需要调整此数据(原因:谷歌搜索 WNRO 或询问)。

  1. 第一个进程以 1 秒的间隔连续将数据(约 5-8 行文本)写入 /var/run/one.pipe 并将其留在那里直到被读取(?)

  2. 第二个进程是从命名管道读取此数据。我可以更改要读取的命名管道的名称。我将其更改为 /var/run/two.pipe

最终目标是从 one.pipe 读取数据,进行一些处理,然后将其传递给 Two.pipe。然而,与此同时,为了进行测试,我只是尝试将数据从 one.pipe 逐一复制到 Two.pipe。我认为在整个处理过程中浪费时间是不可行的,直到我能够完成这个(更简单的?)任务。

一个非常简单的 shell 脚本可以工作:copy.sh

#!/bin/sh
cat one.pipe > two.pipe &
Run Code Online (Sandbox Code Playgroud)

现在我捕获了源进程写入的一些数据one.pipe,并尝试手动将其写入two.pipe以供读取进程读取:

#!/bin/sh

while true; do
  echo "\$GPGGA,,,,,,,,*12" > two.pipe
  echo "\$GPGSA,,,,,,,,*23" > two.pipe
  echo "\$GPRMC,,,,,,,,*34" > two.pipe
  echo "\$GPGSV,,,,,,,,*45" > two.pipe
  echo "\$GPGSV,,,,,,,,*56" > two.pipe
  echo "\$GPGSV,,,,,,,,*67" > two.pipe
  # checksums (*xx) are …
Run Code Online (Sandbox Code Playgroud)

pipe shell-script fifo

0
推荐指数
1
解决办法
2563
查看次数

标签 统计

fifo ×1

pipe ×1

shell-script ×1