使用子进程后无法使用print语句

时间:2013-04-28 16:31:19

标签: python

我正在使用zbarcam读取条形码,因为zbarcam在读取代码后不会自动终止。

这是我的parking-mng.py文件:

#!/usr/bin/python

import subprocess
import MySQLdb as db
from config import *
import sys

temp = ''

def scanfun():
    subprocess.call("./k.sh")
    reg = sys.stdin.readline().strip()
    con = None

    con = mdb.connect(server, user, pwd, database);
    cur = con.cursor()
    print "successful"  

while(1):
    print "------Parking Sector 11----------"
    print "Select : "
    print """1. Scan Code\n2. Update Balance\n3. Exit\n"""

    choice = raw_input()

    if choice == '1':
        scanfun()

    else:
        break

这是我的k.sh文件:

#!/bin/bash

tmp=/tmp/barcode.$$
zbarcam --raw /dev/video1 > $tmp &
pid=$!

# Sleep until file has content

while [[ ! -s $tmp ]] ; do
    sleep 1
done

kill $pid
cat $tmp | ./parking-mng.py

问题是print语句不起作用,终端上没有打印任何内容。

1 个答案:

答案 0 :(得分:2)

因此,您的k.sh运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py k.sh然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh parking-mng.py然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py然后运行k.sh,然后运行parking-mng.py,然后运行k.sh,然后运行parking-mng.py,然后运行{{1}},然后运行{{1}} {1}},然后运行{{1}},然后运行{{1}},...

无限递归?