Utilizzare subprocess.call()
. Dalla documentazione:
subprocess.call (* popenargs, ** kwargs)
comando Esegui con argomenti. Attendere il completamento del comando, quindi restituire l'attributo returncode. Gli argomenti sono gli stessi del costruttore di Popoli .
Edit:
subprocess.call()
utilizza wait()
, e wait()
è vulnerabile a situazioni di stallo (come Tommy Herbert ha sottolineato). Dalla documentazione:
Attenzione: Questo stallo se il processo bambino genera abbastanza uscita ad un tubo stdout o stderr tale che blocca in attesa del tubo di OS buffer per accettare altri dati. Utilizzare communicate() per evitare ciò.
Così, se il comando genera un sacco di uscita, utilizzare communicate()
invece:
p = subprocess.Popen(
["scanx", "--udp", host],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()
fonte
2010-04-01 16:24:07
A differenza di poll(), c'è un pericolo di stallo qui. –
@ Tommy, buon punto. Ampliato su questo nella mia risposta. Grazie. –
Grazie mille ragazzi :) –