首页
学习
活动
专区
圈层
工具
发布

截取fifo
EN

Stack Overflow用户
提问于 2020-07-28 09:04:55
回答 2查看 66关注 0票数 0

我有两个命名管道,用于应用程序和服务之间的通信。

基本上,应用程序是一个图形用户界面,它从用户那里获取输入,并将数据写入命名的pip,让我们称之为out_fifo。该服务读取该数据并执行一些其他操作,在完成处理后,它将结果写入一个命名管道(让我们称之为in_fifo )。此时,应用程序从in_fifo读取数据。

有没有可能截取/代理/读取来自两个管道的写入数据?我的意思是,我可以在不中断应用程序和服务的情况下读取传递到两个管道的数据吗?

我尝试从服务读取传入数据的内容:

代码语言:javascript
复制
#!/bin/bash    
in_data="in_fifo"
while :; do
    while true
    do
        if read -r line; then
            echo "Data: $line"
        fi
    done <"$in_data"
done

但我从shell中看不到任何东西,应用程序也无法继续运行。应用程序挂起等待数据

EN

回答 2

Stack Overflow用户

发布于 2020-07-28 12:11:08

strace可以提供帮助。看看这篇文章:https://stackoverflow.com/a/46502533/13876104

编辑:你可以随时添加一组额外的先进先出和一个应用程序来代理你的通信,但这将意味着重新连接你原来的应用程序。但是,如果您想这样做的唯一原因是为了进行调试而监视数据,那么最好避免这种开销。

票数 0
EN

Stack Overflow用户

发布于 2020-07-28 13:44:56

不是,正如它的名字所揭示的,FIFO只是简单的先入先出。如果不使用流,就无法对内容进行重新排序或读取。

您可以做的是创建一个代理,它从一组FIFO读取数据,并将相同的数据写回另一组,然后重新连接使用者以使用第二组而不是第一组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63125643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档