[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