2013-10-14 1 views
0

Мне нужно запустить tcpdump, убить его после бит и прочитать из stderr. Следующий код работает в Python 2.7, но мне нужно, чтобы заставить его работать в Python 2.5 также ::выполнить процесс оболочки в Python 2.5

tcpdumpProcess = subprocess.Popen(['sudo', '/usr/sbin/tcpdump', 
         '-w', 'dumpedTraffic.pcap', 
         '-n', 'ip'], 
         stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE) 
tcpdumpProcess.terminate()  
tcpdumpProcess.wait() 
tcpdump_stderr = tcpdumpProcess.communicate()[1] 

Python 2,5 жалуется, что:

tcpdumpProcess.terminate() AttributeError: 'Popen' object has no attribute 'terminate'

Что ен эквивалент способ сделать это в Python 2.5?

+1

Может быть, это поможет: http://stackoverflow.com/ д/704203/1983854 – fedorqui

ответ

1

Вы можете использовать метод os.kill для завершения процесса.

os.kill(tcpdumpProcess.pid, signal.SIGTERM) 
1

Вы можете выполнить команду Kill вместе с processid так же, как и выполнить предыдущую команду.

или

и может использовать методы убить предусмотренные в модуле зева вместе с идентификатором процесса и состояния сигнала, например TERM и т.д.