使用FIFO和日志文件桥接Unix域套接字

时间:2013-09-22 01:39:47

标签: bash sockets shell unix fifo

我需要编写一个脚本 - 最好是一个bash脚本 - 它将在Unix域套接字上侦听,并在通过FIFO接收输入时将输出传递给日志文件。 FIFO / log结尾应该模仿ii的样式。该脚本还能够监视FIFO的输入并对其作出反应(例如,用于“停止”功能)。

据我所知:

if [[ ! -p "in" ]]; then mkfifo "in"; fi

while true; do
  nc -Ul sock >> "out"
done

我坚持如何将FIFO的输入转换为netcat。当我添加< "in"并尝试从另一个shell连接到套接字时,连接被拒绝。奇怪的是,当我用常规文件替换“in”时,它工作得很好。

最简单/最正确的方法是什么?

修改:在整个while块上使用管道具有相同的效果。

1 个答案:

答案 0 :(得分:1)

尝试使用一些“代理”输入。例如“cat”:

if [[ ! -p "in" ]]; then mkfifo "in"; fi

(while true; do cat in; done) | (while true; do
  nc -Ul sock >> "out"
done)