Ilias95 Δημοσ. 17 Φεβρουαρίου 2015 Δημοσ. 17 Φεβρουαρίου 2015 Καλημέρα,Δεν μπορώ να βρω πως μπορώ να σκοτώσω τα 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.Ευχαριστώ εκ των προτέρων.
pmav99 Δημοσ. 17 Φεβρουαρίου 2015 Δημοσ. 17 Φεβρουαρίου 2015 Δες αυτό: https://code.google.com/p/py-setproctitle/ Ουσιαστικά σου επιτρέπει να ονομάσεις το spawned process έτσι ώστε να μπορείς να το βρεις. Δεν το έχω δοκιμάσει. Βλέπω υπάρχουν και άλλα πάντως. Δες εδώ: https://encrypted.google.com/search?hl=en&q=python%20name%20process
Ilias95 Δημοσ. 17 Φεβρουαρίου 2015 Μέλος Δημοσ. 17 Φεβρουαρίου 2015 Θα προτιμούσα αν υπάρχει κάποιος τρόπος που να μην χρησιμοποιεί modules εκτός της stdlib. Αλλιώς νομίζω και με το psutil γίνεται.Θέλω όμως να αποφύγω οποιοδήποτε dependency και απ' όσο έψαξα στο google δεν βρήκα κάτι. Μου φαίνεται απλό και common/trivial πρόβλημα για να μην υπάρχει μια λύση μόνο με stdlib.
pmav99 Δημοσ. 17 Φεβρουαρίου 2015 Δημοσ. 17 Φεβρουαρίου 2015 Δεν βλέπω να υπάρχει λύση εντός stdlib και είναι λογικό ως ένα βαθμό γιατί θα είναι δύσκολο να γίνει cross platform. http://bugs.python.org/issue5672
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα