如何让bash等待结果并在获得结果时发送SIGKILL?

时间:2009-10-15 07:43:04

标签: bash keyboard stdout barcode sigint

我想使用zbarcam,但在阅读条形码后,它不会停止。

$ zbarcam | xvkbd -file - -window emacs
EAN-13:6941428130969
CODE-128:3096140900557

你知道我怎么能告诉bash在第一次打印stdout后杀死zbarcam吗?

3 个答案:

答案 0 :(得分:1)

尝试

tmp=/tmp/barcode.$$ # Note: security risk
zbarcam > $tmp &
pid=$!
# Sleep until file has content
while [[ ! -s $tmp ]] ; do
    sleep 1
done
kill $pid
cat $tmp

请注意,如果zbarcam不刷新其输出,它可能无效。

答案 1 :(得分:1)

你试过这个吗?

zbarcam | head -1 | xvkbd -file - -window emacs

答案 2 :(得分:-1)

tmp=/tmp/barcode.$$ # Note: security risk
zbarcam > $tmp &
pid=$!
# Sleep until file has content
while [[ ! -s $tmp ]] ; do
    sleep 1
done
kill $pid
cat $tmp