Проблема в том, что в данном случае, возможности использовать какие-либо объекты синхронизации (очереди, пайпы и т.д.) и передавать их в момент создания подпроцесса нельзя (просто нельзя, в силу некоторых требований, от меня не зависящих), и единственное, чем я могу располагать - это pid пораждённого подпроцесса, и зная какой, нужно каким-то образом сообщить подпроцессу, что тот должен выполнить некоторое действие, указанное в обработчике.
Далее, в мануале сказано, что в случае реализации метода os.kill для винды, любые сигналы, кроме signal.CTRL_C_EVENT и signal.CTRL_BREAK_EVENT будут приводить к моментальному вызовы winapi-шной TerminateProcess, без какого-либо вызова обработчика и проче (то есть, просто и сразу убивать подпроцесс), однако же, эти вин-специфические коды (в случае которых, процесс убиваться не будет), нельзя использовать в задании обработчика для этих сигналов, то есть, если в главной программе, сделать:
os.kill(pid, signal.CTRL_C_EVENT)
def handle(signum, frame):
print("I have signal with num = {0}!!!!!".format(signum))
signal.signal(signal.CTRL_C_EVENT, handle)
signal.signal(signal.CTRL_C_EVENT, handle)
ValueError: invalid signal value
То есть, эти “виндовс-спесифик” сигналы можно использовать только в os.kill, но не в задании обработчка - signal.signal о_0
Собственно, подскажите пожалуйста, имеется ли какой-либо способ уведомить пораждённый подпроцесс (то есть, уже созданный ранее) о каком-либо событии, имея только его PID, без использования каких-либо других объектов синхронизации??