Chinaunix
标题:
shell请教read,wait控制多线程
[打印本页]
作者:
illfar
时间:
2012-06-12 16:50
标题:
shell请教read,wait控制多线程
现在有一个例子,但是跑下来发现,程序无法结束,或者说退出
请高手指点
代码
# !/bin/bash
function a_sub {
sleep 3
}
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
thread=5
for((i=0;i<$thread;i++)); do
echo >&6
done&
for((i=0;i<11;i++ )); do
read -u6
{
a_sub && {
echo " a_sub is finished "
} || {
ech " sub error "
}
echo >&6
}&
done
wait
exec 6>&-
exit 0
sh -x 的结果如下:
$ sh -x sample.sh
+ tmp_fifofile=/tmp/7300.fifo
+ mkfifo /tmp/7300.fifo
+ exec
+ rm /tmp/7300.fifo
+ thread=5
+ (( i=0 ))
+ (( i<5 ))
+ echo
+ (( i++ ))
+ (( i<5 ))
+ echo
+ (( i=0 ))
+ (( i<11 ))
+ read -u6
+ (( i++ ))
+ (( i<5 ))
+ echo
+ a_sub+ (( i++ ))
+ sleep 3
+ (( i<11 ))
+ read -u6
+ (( i++ ))
+ (( i<5 ))
+ echo
+ a_sub
+ sleep 3
+ (( i++ ))
+ (( i<11 ))
+ read -u6
+ (( i++ ))
+ (( i<5 ))
+ echo
+ (( i++ ))
+ (( i<11 ))
+ read -u6
+ a_sub
+ sleep 3
+ (( i++ ))
+ (( i<5 ))
+ (( i++ ))
+ (( i<11 ))
+ read -u6
+ a_sub
+ sleep 3
+ (( i++ ))
+ (( i<11 ))
+ a_sub
+ read -u6
+ sleep 3
+ echo ' a_sub is finished '+ echo ' a_sub is finished '
a_sub is finished
a_sub is finished
+ echo
+ echo
+ (( i++ ))
+ a_sub
+ (( i<11 ))
+ sleep 3
+ read -u6
+ (( i++ ))
+ (( i<11 ))+ a_sub
+ sleep 3
+ read -u6
+ echo ' a_sub is finished '
a_sub is finished
+ echo ' a_sub is finished '
+ echo
a_sub is finished
+ echo
+ (( i++ ))
+ (( i<11 ))
+ a_sub
+ read -u6
+ sleep 3
+ (( i++ ))
+ (( i<11 ))
+ read -u6
+ a_sub
+ sleep 3
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ a_sub
+ sleep 3+ (( i++ ))
+ (( i<11 ))
+ read -u6
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ a_sub
+ (( i++ ))
+ sleep 3+ (( i<11 ))
+ wait
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ echo ' a_sub is finished '
a_sub is finished
+ echo
+ echo ' a_sub is finished '
a_sub is finished
+ echo
这里停止了
作者:
waker
时间:
2012-06-13 08:09
thread=7
作者:
illfar
时间:
2012-06-14 08:35
回复
2#
waker
什么意思啊
应该如何修改阿
作者:
illfar
时间:
2012-06-14 14:54
thread=1的话,就没有问题了
为什么阿
作者:
Honey-pot
时间:
2012-06-14 15:45
提示:
作者被禁止或删除 内容自动屏蔽
作者:
illfar
时间:
2012-06-14 16:12
回复
5#
Honey-pot
可惜,猜错了
作者:
Honey-pot
时间:
2012-06-14 16:27
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2