[python] subprocess

Jan Martinek honza na dp.fce.vutbr.cz
Pátek Srpen 24 16:08:05 CEST 2007


Ahoj,

jakým způsobem by se to dalo zreprodukovat? Výjimku se mi nedaří 
vyvolat, ani když periodicky zkouším pouštět 'sleep' s různými čekacími 
dobami:

#!/usr/bin/python
import subprocess, random
while True:
     t = str(random.randint(1, 5))
     print t
     process = subprocess.Popen(['sleep', t])
     retvalue = process.wait()

Ani když vytvořím binárku, která by měla běžet co nejkratší dobu, tj.

#include<stdio.h>
int main(void){
     return 0;
}

a pak ji zkouším neustále spouštět

#!/usr/bin/python
import subprocess
while True:
     process = subprocess.Popen(['./pokus'])
     retvalue = process.wait()

tak výjimku nedostanu. Může to záviset na platformě?

--
Jan Martinek

Šponar Josef wrote:
> Skript ověřuje zda jsou splněny podmínky pro spuštění externích programů. Když jsou splněny podmínky, pokusí se vytvořit nový proces a testuje návratovou hodnotu.
> 
> V případě, že  externí program běží více než cca.5sekund, tak je vše v pořádku. Ale může se stát, že program  běží kratší dobu a "někdy" to projde v pořádku a "někdy" to skončí popisovanou chybou.
> Zkoušel jsem i popen2, výsledek stejný.
> 
> Používam takovouto konstrukci:
> try:
>    process = subprocess.Popen([prog_name])
>    retvalue = process.wait() 
>    if retvalue:
>      print 'program se sice povedlo pustit, ale neco selhalo'
>    else:
>      print 'vse OK'
> except OSError, error:
>    print 'nepovedlo se ho pustit'
>    print error
> 
> 
>  
> 
> -----Original Message-----
> From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of Petr Nesládek
> Sent: Thursday, August 23, 2007 11:42 PM
> To: Konference PyCZ
> Subject: Re: [python] subprocess
> 
> 
>> ------------ Původní zpráva ------------
>> Od: Šponar Josef <Josef.Sponar na asseco.cz>
>> Předmět: [python] subprocess
>> Datum: 23.8.2007 13:18:06
>> ----------------------------------------
>>
>> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání 
>> subprocess.wait().
>> PYTHON = 2.4
>> System = SunOS
>>
>> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
>> retval=prog.wait()
>>
>> Traceback (most recent call last):
>>   File "av_rizeni.py", line 283, in ?
>>     main()
>>   File "av_rizeni.py", line 180, in main
>>     retval=prog.wait()
>>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
>>     pid, sts = os.waitpid(self.pid, 0)
>> OSError: [Errno 10] No child processes 
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
> 
> Ahoj, možná sezeptám hloupě, ale ten subproces  se rozběhne, nebo ne ?
> 
> Případně co se vůbec děje do momentu než zkončí chybou ?
> 
> Petr
> 
> 
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python