我有一个进程,我在我的 shell 上启动它打印出数据,我有一个 python 脚本来计算它并将其返回给进程。我该怎么做?
我知道使用 pipe
或 >
可以在一方面帮助我,但我怎样才能实现双向重定向?
类似于:my_process |我的脚本 | my_process
合法吗?
我想要发生的事情:
- 从 shell 启动进程
- 进程将数据发送到我的脚本(而不是将其打印到 STDOUT)
- 我的脚本返回处理的答案(而不是将其打印到 标准输出)
- 回到第2步
最佳答案
它可以用 FIFO 模拟(或者如果您使用的是 python,您可以使用管道系统调用创建自己的管道,并根据您的安排重定向它们)。
一些示例代码:
#!/bin/sh
#note: the resource management and error handling here is not very clean or robust
mkfifo fifo0 fifo1
exec 3<>fifo0
exec 4<>fifo1
rm -f fifo0 fifo1
many()
{
i=0
while [ $i -lt $1 ]; do
echo -n x
i=$((i+1))
done
echo
}
proc1()
{
ulimit_p=$(ulimit -p)
while :; do
echo proc1_msg
echo >&2 proc1_written=proc1_msg
read var
echo >&2 proc1_read=$var
sleep 1
done
}
proc2()
{
while :; do
read var
echo >&2 proc2_read=$var
echo proc2_msg
echo >&2 proc2_written=proc2_msg
done
}
pid=0
trap 'echo kill $pid; kill $pid; exit 130' INT
proc1 <&3 >&4 & pid=$!
proc2 <&4 >&3
关于linux - 循环IO重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080515/