2009-07-08 3 views
5

У меня есть скрипт python, управляющий процессом gdb в окнах, и мне нужно отправить SIGINT в порожденный процесс, чтобы остановить целевой процесс (управляемый gdb)Отправка SIGINT в подпроцесс python

Похоже, что в win32 имеется только SIGTERM, но ясно, что если я запустил gdb из консоли и Ctrl + C, он думает, что получает SIGINT. Есть ли способ подделать это так, чтобы функциональность была доступна на всех платформах?

(Я использую подпроцесс модуля, и Python 2.5/2.6)

ответ

1

Windows, не имеет Unix сигналы механизм IPC.

Я бы посмотрел на отправку CTRL-C в процесс gdb.

+0

Согласно приведенной ниже ссылке, вы не можете отправить CTRL + C ?? – Ryan

+0

Я бы отправил последовательность поддельных ключей в процесс GDB. Похоже на макропрограмму. Это определенно не очень. Другим вариантом является инструмент gdb с надежным механизмом IPC win32. – drudru

+0

Поддельная последовательность клавиш не работает. Это не GDB, который обрабатывает последовательность клавиш в прерывание. Оболочка ловит CTRL + C, а затем превращает его в какое-то событие IPC, которое подхвачено gdb и интерпретируется как SIGINT (хотя окна, как мы знаем, не имеют SIGINT) Когда вы говорите «инструмент gdb с надёжным win32 IPC mchanism «вы на самом деле значимы в коде GDB? Как на самом деле идите и опустите в именованный канал или какой-то флаг или что-то, что я могу установить извне? Предположим, что в этом случае это тоже не вариант. – Ryan