Per ora sto usando
Codice: Seleziona tutto
(...)
# quando è richiesto aprire una finestra:
p = subprocess.Popen(["/usr/bin/okular", "/percorso/al/file.pdf"])
(...)
# appena è necessario chiuderla:
p.kill()
ma in questo caso non saprei come chiudere la finestra del visualizzatore invocato a sua volta da xdg-open
Questo perchè p.kill() agisce sul processo col pid di xdg-open e non interferisce con il processo figlio
Cioè, quello che vorrei ottenere con python sarebbe l'equivalente in bash di:
Codice: Seleziona tutto
xdg-open /percorso/al/file.pdf & pid=$(pgrep -n xdg-open)
kill -15 -$pid
Qualcuno mi mostra un trucco per mandare un segnale a tutti i processi figli del sottoprocesso generato dallo script python?man kill ha scritto:Negative PID values may be used to choose whole process groups