php exec()执行奇怪地使用fifo的shell脚本

时间:2014-11-04 07:48:23

标签: php bash shell

我使用php exec()来执行shell脚本,语句是exec(“nohup bash -x script&> log.tmp&”)。

在shell脚本中我使用fifo:

**
PROCESS_NUM=50
mkfifo $dir/fifo_tmp
chmod 777 $dir/fifo_tmp
exec 7<> $dir/fifo_tmp
echo "pid:" $$
for ((i=0;i<$PROCESS_NUM;i++))
do  
    echo "pid:" $$
    echo -ne "$i\n" 1>&7
    echo "status : $?"
    echo "Info : put data to pipe $i times!"
done
for ((i=0;i<$PROCESS_NUM;i++))
do  
    echo "pid:" $$
    read -u7 k
    echo "k:$k"
done**

但是有些不对劲!我把50个数字放到fifo文件中,而我只能从fifo文件中得到0和46!我直接使用shell时运行这个脚本!

调试信息:    **

  • echo -ne '48 \ n'
  • echo'状态:0' 状态:0
  • echo'Info:将数据输入管道48次!' 信息:将数据放入管道48次!
  • ((i ++))
  • ((i <50))
  • echo pid:10914 pid:10914
  • echo -ne '49 \ n'
  • echo'状态:0' 状态:0
  • echo'Info:将数据输入管道49次! 信息:将数据输入管道49次!
  • ((i ++))
  • ((i <50))
  • ((i = 0))
  • ((i <50))
  • echo pid:10914 pid:10914
  • 读-u7 k
  • echo k:0 K:0
  • ((i ++))
  • ((i <50))
  • echo pid:10914 pid:10914
  • 读-u7 k
  • echo k:46 K:46
  • ((i ++))
  • ((i <50))
  • echo pid:10914 pid:10914
  • 读-u7 k ** **

我花了很多时间,但它不起作用!请帮帮我!

提前致谢!

0 个答案:

没有答案