@Dima_kras

Как передать и принять сигнал из Python скрипта в другой скрипт запущенный через Subprocess?

Добрый день. Есть два скрипта на Python. Внутри скрипта А с помощью subprocess.Popen запускается скрипт B.
cmd = "python3 b.py"
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
# наступило события, надо передать сигнал
# os.killpg(os.getpgid(pro.pid), signal)

Как правильно передать сигнал? Сейчас это просто пример откуда-то.
Как обработать этот сигнал в скрипте B, чтобы при его поступлении вызвалась функция.
  • Вопрос задан
  • 1459 просмотров
Решения вопроса 1
@Dima_kras Автор вопроса
Сам спросил, сам отвечу.
Подписаться на сигнал о завершении можно так:

Скрипт b.py:

import signal

def handler(signum, frame):
    # вызовется при получении сигнала

signal.signal(signal.SIGINT, handler)
while (True):
    time.sleep(1)


Скрипт а.py, запуск и отправка сигнала о завершении

import os
import sys
import subprocess
import signal

cmd = "python3 b.py"
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
os.killpg(os.getpgid(self.pro.pid), signal.SIGINT)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
запускать python скрипт из другого python скрипта и тем более таким методом - это просто ужастик. поменяйте подход
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы