cgi integration question 2
Ken
ken at hotmail.com
Sun Oct 20 12:20:08 EDT 2002
"Gerhard Häring" <gerhard.haering at gmx.de> wrote in message
news:slrnar5gqs.hg.gerhard.haering at lilith.my-fqdn.de...
> Ken wrote in comp.lang.python:
> > Hello, I have this problem which I don't know what it means or how
> > to fix, can someone help me?
> >
> > Traceback (most recent call last): File "chessboard.cgi", line 143, in ?
> > outf.close() IOError: [Errno 32] Broken pipe
>
> Dunno why, but I have a few remarks nonetheless.
>
> > Python frontend program:
> > lines = []
> > outf, inf = os.popen2("knight")
> > print >>outf, size #size
> > print >>outf, startX #start X position
> > print >>outf, startY #start Y position
> > outf.close() #<<========= Refer to this line 143
> > time.sleep(1)
>
> Frankly, sleeping in the context of synchronous IO doesn't make any
> sense.
>
> > maxSize = string.atoi(size) * string.atoi(size)
> > while len(lines)< maxSize:
> > lines = inf.readlines() #Output produce by back end program ["34",
"35",
> > ...etc]
>
> readlines() reads the *whole* output, so if after that you read again,
> it will block forever. If you want to read line by line, use
> readline() instead. But read the docs about read() and readline(), as
> you'll find important info there, for example that if it returns an
> empty string it means that you've reached EOF :-)
>
> > if len(lines)==maxSize:
> > inf.close()
> > break
> > time.sleep(1)
>
> You could rewrite this as:
>
> outf, inf = os.popen2("night")
> print >>outf, ...
> ...
> outf.close()
> lines = inf.readlines()
> inf.close()
>
> -- Gerhard
Hi, I think my problem here is that the backend program can't output ontime
and I got an empty list in return. Does lines = inf.readlines() actually
wait for the backend program to finish execution before proceeding to
inf.close() ?
I find it very strange that when I compile using python scriptfile.cgi in
telnet environment, it works fine, but when I put on the web browser, the
list is empty. Do you know how I can fix this problem?
Thanks
==
My original program's segment:
size="3"
startX="2"
startY="1"
function = "3"
lines = []
if function=="3" and size!="" and startX!="" and startY!="":
#Execute Backend program
outf, inf = os.popen2("knight")
print >>outf, size
print >>outf, startX
print >>outf, startY
outf.close()
lines = inf.readlines()
print lines #empty on web browser, ok in telnet
More information about the Python-list
mailing list