Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2016 14:17:58

george31
Зарегистрирован: 2016-01-09
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается убить процесс

По клику на окошке программы запускается видеофайл. Но никак не получается прервать его воспроизведение. Сама программа закрывается, а видеофайл проигрывается до конца

import pygame
from pygame.locals import *
import subprocess
PIPE = subprocess.PIPE
cmd = 'omxplayer -o hdmi 1.MPG'
cmd2 = 'sudo kill '
running = True
pygame.init()
window = pygame.display.set_mode((300,300))
window.fill(pygame.Color(0,0,0))
fps = pygame.time.Clock()
global p
while running:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
p = subprocess.Popen(cmd, shell = True)
pk = p.pid
cmd2=cmd2+str(pk)
if event.type == pygame.KEYDOWN:
running = False
print cmd2
subprocess.Popen(cmd2, shell = True)
pygame.display.update()
fps.tick(30)
pygame.quit()

Отредактировано george31 (Янв. 9, 2016 14:23:27)

Офлайн

#2 Янв. 9, 2016 17:58:16

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Не получается убить процесс

Зачем sudo ?

Офлайн

#3 Янв. 9, 2016 18:37:54

george31
Зарегистрирован: 2016-01-09
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается убить процесс

kampella
Зачем sudo ?
Чтоб наверняка))
Без sudo все равно не закрывается

Офлайн

#4 Янв. 9, 2016 19:58:50

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Не получается убить процесс

import os
import signal
os.kill(int(p.pid), signal.SIGTERM)
os.waitpid(int(p.pid), 0)



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Янв. 9, 2016 23:00:58

george31
Зарегистрирован: 2016-01-09
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается убить процесс

Rodegast
Разобрался почему не получается закрыть видео: p.pid возвращает не идентификатор “omxplayer”, а “sh” . Если использовать
subprocess.Popen('pkill omxplayer', sheel = True)
, то видео закрывается, но хотелось бы узнать как получить идентификатор запущенного “omxplayer” после клика мышки.

Офлайн

#6 Янв. 10, 2016 13:07:08

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Не получается убить процесс

> p.pid возвращает не идентификатор “omxplayer”, а “sh”

Не надо его запускать в отдельном шеле, тогда и pid будет правильным. pid omxplayer и pid sh скорей всего будут отличатся на 1, но это не всегда гарантируется.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Янв. 10, 2016 18:05:23

george31
Зарегистрирован: 2016-01-09
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается убить процесс

Rodegast
> p.pid возвращает не идентификатор “omxplayer”, а “sh” Не надо его запускать в отдельном шеле, тогда и pid будет правильным. pid omxplayer и pid sh скорей всего будут отличатся на 1, но это не всегда гарантируется.
А как сделать так, чтобы omxplayer не запускался в отдельном шеле?

Офлайн

#8 Янв. 10, 2016 19:15:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Не получается убить процесс

p = subprocess.Popen(cmd)



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Янв. 10, 2016 19:15:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version