我正在尝试设置一个 IO 脚本以允许两个 FIFO 之间的输入/输出通信(一个 FIFO 用于输入,另一个用于输出)。
在我输入输入时,我的服务器必须接收输出。两者Internals/servout
都是Internals/servin
FIFO。我目前通过tail
在等待输入时在后台运行来实现这一点。
这是我当前的代码:
#!/bin/bash
# io.sh
tail -f -n 0 Internals/servout &
tpid=$!
read -p ">> " v
while [ $? -eq 0 ] && [ "$v" != "exit" ] && [ "$v" != "quit" ]; do
echo $v > Internals/servin
sleep .2
read -p ">> " v
done
kill $tpid
我遇到的主要问题是当我不小心键入 Ctrl-C 来结束我的脚本时。发生这种情况时,tail -f -n 0 Internals/servout &
代码将继续在后台运行。正如您可能想象的那样,这是不可取的。
有没有办法确保tail
命令被杀死,即使发送了 SIGINT 或类似的信号?finally
我正在考虑一些可以与Python 中的关键字具有相同目的的东西,或者tail
通过使用$$
.
随意评论我的不良做法 -bash
是我较新的语言之一,建设性的批评是改进的最快方法。