Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

Δεν μπορώ να βρω πως μπορώ να σκοτώσω τα child processes μιας διεργασίας την οποία ξεκινάω με το subprocess της python.

Για να αποφύγω το xy problem παραθέτω αυτό που πραγματικά θέλω να πετύχω.
 

import subprocess, shlex
p = subprocess.Popen(shlex.split("unoconv --listener"))
# το p.pid είναι 11483

Ο παραπάνω κώδικας, ανοίγει ένα openoffice/libreoffice listener:

~  ➜ ps -e | grep office
11485 pts/1    00:00:00 soffice.bin

~  ➜ ps -e | grep 11483
11483 pts/1    00:00:00 python3

~  ➜

Αν σκοτώσω την p είτε με p.kill() είτε στέλνοντας SIGTERM με άλλο τρόπο, ο libreoffice listener θα συνεχίσει να τρέχει, πράγμα που θέλω να αποφύγω. Τι μπορώ να κάνω;

Με ενδιαφέρει κάτι που να δουλεύει καθαρά σε linux.

Ευχαριστώ εκ των προτέρων.

Δημοσ.

Δες αυτό: https://code.google.com/p/py-setproctitle/

 

Ουσιαστικά σου επιτρέπει να ονομάσεις το spawned process έτσι ώστε να μπορείς να το βρεις.

 

Δεν το έχω δοκιμάσει.


Βλέπω υπάρχουν και άλλα πάντως. Δες εδώ: https://encrypted.google.com/search?hl=en&q=python%20name%20process

Δημοσ.

Θα προτιμούσα αν υπάρχει κάποιος τρόπος που να μην χρησιμοποιεί modules εκτός της stdlib. Αλλιώς νομίζω και με το psutil γίνεται.

Θέλω όμως να αποφύγω οποιοδήποτε dependency και απ' όσο έψαξα στο google δεν βρήκα κάτι. Μου φαίνεται απλό και common/trivial πρόβλημα για να μην υπάρχει μια λύση μόνο με stdlib.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...