我有两个命名管道,用于应用程序和服务之间的通信。
基本上,应用程序是一个图形用户界面,它从用户那里获取输入,并将数据写入命名的pip,让我们称之为out_fifo。该服务读取该数据并执行一些其他操作,在完成处理后,它将结果写入一个命名管道(让我们称之为in_fifo )。此时,应用程序从in_fifo读取数据。
有没有可能截取/代理/读取来自两个管道的写入数据?我的意思是,我可以在不中断应用程序和服务的情况下读取传递到两个管道的数据吗?
我尝试从服务读取传入数据的内容:
#!/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中看不到任何东西,应用程序也无法继续运行。应用程序挂起等待数据
发布于 2020-07-28 12:11:08
strace可以提供帮助。看看这篇文章:https://stackoverflow.com/a/46502533/13876104
编辑:你可以随时添加一组额外的先进先出和一个应用程序来代理你的通信,但这将意味着重新连接你原来的应用程序。但是,如果您想这样做的唯一原因是为了进行调试而监视数据,那么最好避免这种开销。
发布于 2020-07-28 13:44:56
不是,正如它的名字所揭示的,FIFO只是简单的先入先出。如果不使用流,就无法对内容进行重新排序或读取。
您可以做的是创建一个代理,它从一组FIFO读取数据,并将相同的数据写回另一组,然后重新连接使用者以使用第二组而不是第一组。
https://stackoverflow.com/questions/63125643
复制相似问题