私は、ターミナルを使ってプロセスを中断したい(私はそれをやめたくない)。現在、プロセスを停止できる唯一の方法は、Ctrl + Cを物理的にタップすることです。しかし、私が作成しているプログラムのために、Ctrl + Cをタップする必要はありません。 WindowsのコマンドラインでCtrl + Cをタップするのと同じことをするコマンドを入力する方法はありますか?私は私のプログラムのためにこれを行うことができる必要があります私はcmdコマンドを送信するためにparamikoを使用していますが、私はparamikoでctrl + cを使うことはできません。Windowsのcmd行でctrl-cをシミュレートする方法は?
すなわちCMD CTRL-Cコマンドライン用コマンドtaskkill
からinterrupt_this_program
raise KeyboardInterrupt – Rosh
raiseは認識可能なコマンドではないので、cmd行で入力した@roshは機能しません。私は何をしますか? –
コンソールコントロールイベントを送信するには、最初に 'AttachConsole(target_pid)'を介してターゲットプロセスと同じコンソールにアタッチする必要があります。これは一度に1つのコンソールにしか接続できないため、非コンソール(GUI)アプリケーションから行うのが最も簡単です。次に 'GenerateConsoleCtrlEvent'を呼び出して' CTRL_C_EVENT'を送ります。これはUnixの 'killpg'のようなプロセスグループを対象としているので、グループ0に送信することで、接続されているすべてのプロセスにイベントをブロードキャストするのが最も簡単です。もちろん、自分のプロセスが含まれているので、プロセスのCtrl + 'SetConsoleCtrlHandler(NULL、TRUE) 'を介して。 – eryksun