2009-07-08 8 views
5

Ich habe ein Python-Skript, das einen gdb-Prozess in Windows verwaltet, und ich muss in der Lage sein, ein SIGINT an den erzeugten Prozess zu senden, um den Zielprozess anzuhalten (verwaltet von gdb)Senden von SIGINT an einen Subprozess von Python

Es scheint, dass nur SIGTERM in win32 verfügbar ist, aber klar, wenn ich gdb von der Konsole und Ctrl + C starte, denkt es, dass es ein SIGINT empfängt. Gibt es eine Möglichkeit, das so zu fälschen, dass die Funktionalität auf allen Plattformen verfügbar ist?

(Ich bin mit dem Subprozess-Modul und Python 2,5/2,6)

Antwort

1

Windows-nicht über die Unix-Signale IPC-Mechanismus.

Ich würde versuchen, ein CTRL-C an den gdb-Prozess zu senden.

+0

Nach dem Link unten können Sie nicht senden STRG + C? – Ryan

+0

Ich würde die falsche Schlüsselsequenz an den GDB-Prozess senden. So ähnlich wie ein Macro-Programm. Es ist definitiv nicht schön. Eine andere Möglichkeit besteht darin, den gdb-Prozess mit einem zuverlässigen win32-IPC-Mechanismus zu instrumentieren. – drudru

+0

Gefälschte Tastenfolge funktioniert nicht. Es ist nicht GDB, das die Schlüsselsequenz in einen Interrupt verarbeitet. Die Shell fängt das STRG + C ab und verwandelt es in eine Art IPC-Event, das von gdb aufgenommen und als SIGINT interpretiert wird (obwohl Windows, wie wir es kennen, kein SIGINT hat) Wenn du sagst "instrument the gdb-prozess mit einem zuverlässigen win32-IPC-mechanismus "du meinst eigentlich viel rum im GDB-code oder? Wie gehen Sie tatsächlich in eine Named Pipe oder eine Flagge oder etwas, das ich extern einstellen könnte? Nehmen wir an, dass dies auch keine Option ist. – Ryan