POSIX兼容的shell命令,用于读取具有超时的协同进程标准输出

时间:2015-07-01 06:51:23

标签: linux shell unix posix aix

我正在使用这种简单的程序,我将cmds读取传递给另一个协同处理shell并读取stdout并显示它,需要读取-t(超时),否则循环会卡在读取中,等待其他进程将输出发送到stdout,但是问题是读取-t不符合POSIX并且在AIX或Solaris上不起作用,是否有其他方法可以使其工作以便它适用于所有符合POSIX的平台?这个解决方案http://compgroups.net/comp.unix.shell/read-timeout/498289适用于从终端读取而不是来自协同进程,不确定如何适应这种情况?

#!/bin/ksh
ksh |&
while read INPUT
do
 echo $INPUT
 print -p "$INPUT"
 while read -t 1 -p OUT
        do
                case $OUT in
                        $)
                                break ;;
                        *)
                                echo "${OUT}" ;;
                esac
        done
done

0 个答案:

没有答案