問題タブ [keyboardinterrupt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
14721 参照

python - Ctrl-C で Python のトレースバックを削除する

Ctrl+を押したときにトレースバックが表示されないようにする方法はありますか?つまり、Python スクリプトでcレイズしますか?KeyboardInterrupt

0 投票する
1 に答える
351 参照

python - 遅いシステムコールでの SIGINT の処理

私はPythonを初めて使用するので、この質問が非常に基本的なものである場合はご容赦ください。

select モジュールを使用してソケットからデータを受け取りながら、キーボード割り込みを処理しようとしています。そのため、ソケットからのデータを待機し、それをコンソールに出力する select.select() 関数呼び出しがあります。

CTRL_C を押すと、select.error が発生したり、exceptions.IOError 例外が発生したりすることがあるようです。対応するエラー コードは、両方の例外で 4 です。

コール スタックの奥深くで KeyboardInterrupt 例外を処理するコードがいくつかあるため、ソケット接続を受け入れる関数で SIGINT を取得すると、KeyboardInterrupt 例外を再発生させたいだけです。また、接続関連の例外をキャッチしたいと考えています。

例外のエラー コードを確認し、それが 4 の場合は KeyboardInterrupt を発生させても安全でしょうか? これは、接続関連の例外をキャッチする能力に影響しますか? エラー コードに関する適切なリソースはありますか?

ありがとう!

0 投票する
1 に答える
1007 参照

c - RETを押さずに入力を求める方法 - C、Linux OSでのキーボード割り込み

私が求めていることについて多くのことを読みましたが、私が見つけた最も近いものは ncurses ライブラリを使用することです。私がしているのは、ファイルが変更されたかどうか、または新しいファイルがあるかどうかを確認するためにいくつかのリモートフォルダーを監視する単純な http クライアントです。また、いくつかのコマンドについて標準入力をチェックする必要があるため、親プロセスを使用して標準入力を監視し、ワーカー プロセスを使用してリモート ディレクトリを監視することを計画しています。キーボード割り込みのようなものを使用したいと思います。キーボードを押すためのシグナルハンドラーをインストールするようなもので、ユーザーは各コマンドの後にEnterキーを押す必要がありません。

これまでのところ、ncurses は必要なことを行っていますが、stdout ではなく stdscr で印刷できません。問題は、このプロジェクトが大学の課題であり、mi プログラムの stdout を読み取るスクリプトを通じてチェックされる可能性が非常に高いことです...

それで、何か提案はありますか?

関連するコードは次のとおりです。

プログラムを実行するときに、出力をファイルにリダイレクトすると、空のファイルが返されます

ご協力いただきありがとうございます!!!=)

0 投票する
2 に答える
30458 参照

unix - Ctrl-CとSIGINTの違いは何ですか?

例外を受け取った後にsegfaultsするPythonプログラムをデバッグしていKeyboardInterruptます。これは通常Ctrl+C、シェルから押すことによって行われます。SIGINT特定のコード変更でバグが修正されたかどうかをテストするために、起動後ランダムにプログラムに送信される小さなシェルスクリプトを用意しました。私が抱えている問題は、Ctrl+C送信が信号の送信とはプログラムに異なる影響を及ぼしSIGINT、バグが発生しないように見えることです。そのため、2つのアクションの違いは何でしょうか。

このプログラムはキーボードアクションをまったくキャッチせず、いくつかのスレッド/プロセスを含むPythonプログラムです。シグナルハンドラーをインストールせず(Pythonはインストールしますが)、をstty -a提供しintr = ^Cます。すべてのサブプロセス/スレッドに送信し、プライマリプロセスにのみ送信する可能性があると思いますが、それは私の疑いの範囲ですCtrl+CSIGINTkill -INT

を送信するシェルスクリプトは次のとおりkill -INTです。

0 投票する
1 に答える
36703 参照

python - Pythonは、KeyboardInterrupt例外を伴う無限ループを終了します

Ctrl+C を押しても while ループが終了しません。私の KeyboardInterrupt 例外を無視しているようです。ループ部分は次のようになります。

繰り返しますが、何が問題なのかはわかりませんが、私の端末は、例外にある 2 つの印刷アラートを出力することさえありません。誰かがこの問題を理解するのを手伝ってくれますか?

0 投票する
3 に答える
2565 参照

python - スレッド化/マルチプロセッシングPythonスクリプトが正しく終了しないのはなぜですか?

クリーンにシャットダウンできるようにする必要があるサーバースクリプトがあります。通常のステートメントをテストしているときに、通常の方法では機能しないtry..exceptことに気付きました。Ctrl-C通常、私はこのような長時間実行されるタスクをラップします

そのため、でタスクを正常にシャットダウンできますCtrl-C。私はこれまでこれで問題に遭遇したことはありませんがCtrl-C、この特定のスクリプトが実行されているときにヒットすると、スクリプトはキャッチせずに終了しますCtrl-C

初期バージョンはProcessfromを使用して実装されましmultiprocessingた。Threadfromを使用してスクリプトを書き直しましたthreadingが、同じ問題があります。threading私はこれまで何度も使用したことがありますが、multiprocessing図書館は初めてです。Ctrl-Cいずれにせよ、私はこれまでこの行動を経験したことがありません。

通常、私は常に番兵などを実装してQueuesThreadインスタンスを整然と閉じますが、このスクリプトは応答なしで終了します。

signal.SIGINT最後に、このようにオーバーライドしてみました

ここCtrl+Cで実際にキャッチされましたが、ハンドラーは実行されず、何も出力されません。

threading/multiprocessingアスペクトに加えて、スクリプトの一部にはC++ SWIGオブジェクトが含まれています。それがそれと関係があるのか​​どうかはわかりません。OSXLionでPython2.7.2を実行しています。

だから、いくつかの質問:

  1. 何が起きてる?
  2. どうすればこれをデバッグできますか?
  3. 根本的な原因を理解するために何を学ぶ必要がありますか?

注意:スクリプトの内部は独自のものであるため、コード例を示すことはできません。ただし、これを自分でデバッグできるように、ポインターを喜んで受け取ります。私は、誰かが私を正しい方向に向けることができるかどうかを理解するのに十分な経験を積んでいます。

編集:C++ SWIG奇妙な動作の原因を確認するためにインポートなどをコメントアウトし始め、ライブラリのインポートに絞り込みました。ライブラリをインポートする理由がC++ SWIG「盗む」という考えはありCtrl-Cますか?私は有罪の図書館の著者ではありませんが、私のSWIGの経験は限られているので、どこから始めればよいのかよくわかりません...

編集2: Windowsマシンで同じスクリプトを試したところ、Windows7ではCtrl-C期待どおりにキャッチされました。私は実際にはOSXの部分を気にするつもりはありません、とにかくスクリプトはWindows環境で実行されます。

0 投票する
1 に答える
2324 参照

python - tkinterフレームが発生するまで、tkinterキーボード割り込みは処理されません

私は python+tkinter で書かれた GUI アプリケーションを持っています。私のワークフローでは、通常、コマンドラインから GUI を起動し、GUI でいくつかのことを行った後、他のターミナル ウィンドウに移動して作業を行っています。必然的に、ある時点で GUI をシャットダウンしたくなります。そして、習慣から、GUI を開始したターミナルに移動して、KeyboardInterrupt (Ctrl-c) を送信することがよくあります。ただし、この割り込みは、ウィンドウ マネージャーで GUI ウィンドウを表示するまで受信されません。なぜこれが起こるのか誰か知っていますか?GUIが単一の機能で開始された場合、簡単な回避策はありmultiprocessingますか?

0 投票する
1 に答える
832 参照

c - C で行われた IDT が機能しない

特にキーボードのキーを押したときにキーボード関連の割り込みルーチンが呼び出されないため、IDT を機能させることができません。IDT テーブルの特別な 48 ビット ポインターのアドレスを渡しています。みたいにやってます

また、少なくとも GDT が機能しているかどうかもわかりません。

1) IDT を機能させるにはどうすればよいですか。私もいくつかのチュートリアルを見ましたが、役に立ちませんでした 2) GDT が正しく動作しているかどうかを確認するにはどうすればよいですか?

前もって感謝します。

編集:私は自分のOSのためにこれをやっています。アセンブリ ルーチンがポインタのアドレスを正しく受け取ることができるかどうか疑問です。そのため、インラインアセンブリを使用してLidtも実行しようとしましたが、役に立ちませんでした。何が悪いのかわかりません。手がかり、アイデアはありますか?

}

}

0 投票する
0 に答える
300 参照

operating-system - GDT が正しく設定されているかどうかを確認する方法は?

OS の IDT と GDT が全体として機能していません。どれが正しく設定されていないかわかりません。GDT が適切に設定されているかどうかを確認して、どこに問題があるかを突き止めることができますか。

私はCでこれをやっています。

0 投票する
1 に答える
1813 参照

python - multiprocessing.Pool #python の使用中に KeyboardInterrupt で実行を停止する方法

重複の可能性:
Python のマルチプロセッシング プールでのキーボード割り込み

Python のマルチプロセッシング モジュールには、Pool http://docs.python.org/library/multiprocessing.html#module-multiprocessing.poolと呼ばれるものがあります。

プロセスのプールが動作している間、KeyboardInterrupt、つまり Ctrl + C を使用してスクリプトを終了させることができません。プールは新しいプロセスを生成し、抜け出す唯一の方法は ctrl + z に続いてそれらを手動で強制終了することです。

これをテストしようとしたスクリプトは次のとおりです。

私のメイン スクリプトは、time.sleep() よりもはるかに時間がかかる処理を実行しようとします。テスト実行を試みるたびに、最初にプロセスの ID を見つけて手動で終了または強制終了する必要があります。産んだ。回避策を提案してください。