Mi piacerebbe eseguire ripetutamente un sottoprocesso il più velocemente possibile. Tuttavia, a volte il processo richiederà troppo tempo, quindi voglio ucciderlo. Io uso signal.signal (...) come di seguito:Uccidere o terminare un sottoprocesso durante il timeout?
ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)
signal.alarm(1)
.....
def stop_handler(signal, frame):
print 'Stop test'+testdir+'for time out'
if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
os.kill(ppid, signal.SIGKILL)
return False
ma a volte questo codice cercherò di fermare il passaggio del turno da eseguire. Stop test/home/lu/workspace/152/treefit/test2per timeout /bin/sh:/home/lu/workspace/153/squib_driver: non trovato --- questa è l'esecuzione successiva; il programma lo interrompe in modo errato.
Qualcuno sa come risolvere questo? Voglio fermarmi in tempo non eseguire 1 secondo il time.sleep (n) spesso attendere n secondi. Non voglio che io possa eseguire meno di 1 secondo
Quindi, in sostanza, se il sottoprocesso viene eseguito su 1 secondo, si desidera eliminarlo e avviare quello successivo? È corretto? –
Come si crea il sottoprocesso? perché assomiglia all'espressione __ppid = pipeexe.pid__ sta ottenendo il successivo sottoprocesso che verrà eseguito !!! – mouad
Quindi, in sostanza se il sottoprocesso viene eseguito su 1 secondo, si desidera eliminarlo e avviare quello successivo? È corretto? sì, giusto – user504909