the work-around :

> while 1:
>   try:
>       function() 
>       break
>   except IOError: 
>       sleep(0.1)

works, 
but i have to add it for each grass command i'm running in the code.



Il giorno 15/mag/2010, alle ore 00.22, massimodisa...@gmail.com ha scritto:

> Il giorno 30/apr/2010, alle ore 02.39, Glynn Clements ha scritto:
> 
>> 
>> Massimo Di Stefano wrote:
>> 
>>> actually i'm using :
>>> 
>>> out = subprocess.Popen(['m.proj', '-o'], stdout=subprocess.PIPE,  
>>> stdin=subprocess.PIPE).communicate("%s %s" % (x,y))[0]
>> 
>> That will work on Unix, but Windows will complain due to the lack of
>> the .exe suffix. You can use grass.Popen() to get around that.
> 
> thanks Glynn i adopted this way and it works (but i haven't tested on windows)
> 
>> 
>>> This topic, maybe is good to discuss a problem i'm having about subprocess,
>>> please apologize me if it is OT, tell me to open a new thread.
>>> 
>>> The error i'm having is strictly connected with subprocess and how grass 
>>> handle it.
>>> The weird is that the error i'm having comes up only on OSX while on linux 
>>> all works fine.
>>> 
>>> this the error log  :
>> 
>>> File 
>>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py",
>>>  line 663, in communicate
>>>  stdout = self.stdout.read()
>>> IOError: [Errno 4] Interrupted system call
>> 
>> This appears to be a bug either in Python's read() method for pipes or
>> in Python's subprocess module. The underlying read() is failing with
>> EINTR, which can happen if a signal is received during a blocking
>> system call.
>> 
>> Normally, you would configure the signal handler to resume any system
>> calls (unless you specifically want it to interrupt blocking calls,
>> e.g. implementing a timeout by setting a timer and having SIGALRM
>> interrupt the system call).
>> 
>> In this case, I would expect the code to just try again, rather than
>> raising an exception. EINTR and EAGAIN are "transient" errors, in that
>> a subsequent attempt will typically succeed.
> 
> i'm tring to find a way to follow your suggestions.
> 
> if "function()" is the subprocess action that give me error on osx
> 
> maybe i can try something like :
> 
> 
> while 1:
>   try:
>       function() 
>       break
>   except IOError: 
>       sleep(0.1)

_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to