我有一个脚本可以创建一个FIFO并启动一个将输出写入FIFO的程序。然后我读取并解析输出,直到程序退出。
MYFIFO=/tmp/myfifo.$$
mkfifo "$MYFIFO"
MYFD=3
eval "exec $MYFD<> $MYFIFO"
external_program >&"$MYFD" 2>&"$MYFD" &
EXT_PID=$!
while kill -0 "$EXT_PID" ; do
read -t 1 LINE <&"$MYFD"
# Do stuff with $LINE
done
当程序仍在运行时,这可以正常读取输入,但看起来忽略了读取超时,并且在外部程序退出后读取挂起。
我在其他脚本中成功使用了超时读取,以及一个简单的测试脚本,使外部程序无法正确超时。我在这里做错了什么?
编辑:当我从命令行运行脚本时看起来像read -t
函数一样,但是当我作为xcodebuild构建过程的一部分运行它时,超时不起作用。这两种环境有什么不同?
答案 0 :(得分:0)