Sto lavorando su alcuni script (nell'azienda in cui lavoro) che vengono caricati/scaricati in hypervisor per sparare un pezzo di codice quando si verifica un evento. L'unico modo per scaricare effettivamente uno script è premere Ctrl - C. Sto scrivendo una funzione in Python che automatizza il processoSimula l'interrupt di tastiera Ctrl-C in Python mentre si lavora in Linux
Non appena vede la stringa "done"
nell'output del programma, dovrebbe uccidere lo vprobe
. Sto usando subprocess.Popen
per eseguire il comando:
lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
Come potete vedere, sto scrivendo l'uscita in buff
descrittore di file aperto in lettura + modalità di scrittura. Controllo l'ultima riga; se ha 'done'
, lo uccido. Sfortunatamente, lo CTRL_C_EVENT
è valido solo per Windows. Cosa posso fare per Linux?
FYI: 're.search' con una stringa costante può essere meglio espresso in' po 'fatto' non in linelist [-1]: ... ' – nneonneo
Sì, hai ragione. Grazie. –