![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
Всем привет!
Столкнулась вот с какой задачей. Необходимо запустить процесс, который будет работать определенное время. По истечению этого времени необходимо в случае его зависания убить процесс. Для этого необходим pid процесса. Я решила сделать так:
Проблема вся в том, что при такой реализации запускаются два процесса 39324 p2 I+ 0:00,05 /bin/sh -c ffmpeg ... 39325 p2 R+ 0:00,32 ffmpeg ... При этом pid = pipe.pid возвращет pid первого процесса. А нужно убивать при этом их оба. Как это можно сделать? Можно ли как-то обойти процесс /bin/sh и запускать только один ffmpeg? |
|||
|
||||
aspolyakov |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 13.9.2008 Где: Russia, Urals, Ye katerinburg Репутация: нет Всего: нет |
Я считаю что у вас в беше запускается ffmpeg, что видно из аргументов беша. Убивать мне кажется надо беш и вместе с ним убьется и ffmpeg(те os.kill(pid, signal.SIGTERM)), так как он привязан к нему. Что происходит при выполнении следующего??:
А вот при выполнении:
у вас убивается какой-то случайный процесс... или я что-то непонимаю? У меня на питоне 2.5.2
Это сообщение отредактировал(а) aspolyakov - 11.1.2009, 17:43 |
||||||||
|
|||||||||
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
Если убить процесс /bin/sh ffmpeg ... , то второй процесс продолжает работать. При выполнении popen2.Popen4() генерируется два процесса, как я уже писала...По моим наблюдениям их pid'ы идут последовательно. Но это всего лишь закономерность. pipe.pid возвращает pid процесса /bin/sh а надо убивать второй процесс, в лучшем случае оба.
Первое, что пришло на ум - обойти запуск команды с шелом.. то есть чтобы ffmpeg запускался сразу без запуска шела, следовательно тогда будет один процесс, и pipe.pid будет относиться именно к нему. Как можно это сделать? Или стоит для этих целей вообще какой-то другой метод использовать? |
|||
|
||||
aspolyakov |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 13.9.2008 Где: Russia, Urals, Ye katerinburg Репутация: нет Всего: нет |
Может в мане к бешу порутся, чтобы он за собой тянул ffmpeg. А в help() питона что есть про этот вопрос:
Добавлено через 3 минуты и 24 секунды а попробуйте:
|
||||
|
|||||
cutwater |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Вообще странно, что если убить shell ffmpeg продолжает работать, это ж дочерний процесс должен быть. Соответственно если убить родительский процесс, завершаются и все дочерние.
|
|||
|
||||
aspolyakov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 13.9.2008 Где: Russia, Urals, Ye katerinburg Репутация: нет Всего: нет |
Я тогоже мнения, а вот если сделать /bin/sh -c ffmpeg, тогда наверняка должен убится.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |