Op donderdag 17-06-2010 om 14:48 uur [tijdzone -0700], schreef Stephen Hansen: > On 6/17/10 2:40 PM, Laurent Verweijen wrote: > > Op donderdag 17-06-2010 om 14:36 uur [tijdzone -0700], schreef Stephen > > Hansen: > >> On 6/17/10 2:09 PM, Laurent Verweijen wrote: > >>> It just gives me an empty string. > >>> > >>> Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) > >>> [GCC 4.4.3] on linux2 > >>> Type "help", "copyright", "credits" or "license" for more information. > >>>>>> from asynchronous import * > >>>>>> p = Popen(["python", "increment.py"], stdin=PIPE, stdout=PIPE) > >>>>>> send_all(p, "5\n") > >>>>>> recv_some(p) > >>> '' > >>>>>> send_all(p, "6\n") > >>>>>> recv_some(p) > >>> '' > >> > >> Yes, that's how it signals the same situation. The point is: your > >> subprocess isn't outputting anything. You sure its not crashing out, for > >> instance? > >> > > > > No, since it responds to the keyboard: > > That doesn't really prove the point. There's all kinds of things that > can go wrong when you switch how you run a program. > > Wrap your increment.py in like: > > import sys > import traceback > > try: > ... > except: > print >>sys.stderr, traceback.format_exc() > > Then add the arg in your Popen, stderr=sys.stderr > > And see if any exception is thrown. > > The original error you got, and the empty string from the recipe, both > mean interpret.py is not returning any output. Why? Maybe its erroring > out-- the subprocess context is different then the context of running a > program from the keyboard. Or maybe you're not sending:
I did exactly what you said, here is the result: prompt:~$ python subchronous_test.py Traceback (most recent call last): File "increment.py", line 7, in <module> n = int(raw_input(str(n))) + 1 EOFError: EOF when reading a line prompt$ close failed in file object destructor: Error in sys.excepthook: Original exception was: > > In your other thread you include an actual traceback: > > Traceback (most recent call last): > File "subchronous_test.py", line 5, in <module> > send_all(str(p), n) > File "/home/Somelauw/asynchronous.py", line 145, in send_all > while len(data): > TypeError: object of type 'int' has no len() > > The first argumetn to send_all should be the actual Popen subclass. The > second should be a string to send. I think that line really is intended > to be: > > send_all(p, str(n)) # assuming 'n' is say, the number 5. > You are right, I swapped the parameters, but even if I correct it, it still gives the second error. -- http://mail.python.org/mailman/listinfo/python-list