tf
Size: a a a
tf
VP
AP
VP
#!/usr/bin/env python2
# -*- coding: utf8 -*-
import subprocess
import time
import threading
# Порождаем процесс 'ls' с параметром '-l'
proc = subprocess.Popen(['ls','-l'])
# Останавливаем главный поток программы на 500 секунд. На их протяжении процесс будет иметь
# статус "зомби", хоть процесс уже и завершился, поскольку не была выполнена обработка
# результата процесса
time.sleep(500)
# В этом месте зомби исчезнет, т.к. программа очистит буферы ввода-вывода для процесса
# и считает код его завершения
proc.communicate()
time.sleep(5)
И можно в соседнем терминале цапануться к процессу родителю по его PID (Ессесно от рута) gdb -p ParentPID (пид процесса родителя) и в нём, после запуска, пишем wait(PID_of_children_zombie)После чего зомбак успешно завершается.AP
#!/usr/bin/env python2
# -*- coding: utf8 -*-
import subprocess
import time
import threading
# Порождаем процесс 'ls' с параметром '-l'
proc = subprocess.Popen(['ls','-l'])
# Останавливаем главный поток программы на 500 секунд. На их протяжении процесс будет иметь
# статус "зомби", хоть процесс уже и завершился, поскольку не была выполнена обработка
# результата процесса
time.sleep(500)
# В этом месте зомби исчезнет, т.к. программа очистит буферы ввода-вывода для процесса
# и считает код его завершения
proc.communicate()
time.sleep(5)
И можно в соседнем терминале цапануться к процессу родителю по его PID (Ессесно от рута) gdb -p ParentPID (пид процесса родителя) и в нём, после запуска, пишем wait(PID_of_children_zombie)После чего зомбак успешно завершается.VP
AP
VP
MK
MK
VP
VP
MK
VP
VP
MK
VP
ПС
tf