問題タブ [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 投票する
2 に答える
6677 参照

python - Python で KeyboardInterrupt が発生するのはいつですか?

すべてのドキュメントが教えてくれるのは、

ユーザーが割り込みキー (通常はControl-CまたはDelete) を押したときに発生します。実行中、定期的に割り込みのチェックが行われます。

しかし、コードの観点からすると、いつこの例外を確認できますか? ステートメントの実行中に発生しますか? ステートメント間のみ?式の途中で発生することはありますか?

例えば:

このコードはタイミングの良いときにリークしKeyboardInterruptますか? それとも、いくつかのステートメントまたは式の実行中に発生しますか?

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

python - ctrl + cが機能しないまでパケットを送信するscapy

まず、これを実行してみました:

9 個のパケットを送信してから停止します。ctrl + cを押すまで実行したかったのです。実行しようとしたIPのリストがあり["192.168.1.7","192.168.1.12","192.168.1.32","192.168.1.223"] ます:

それでも 9 パケットを送信して停止します。ctrl+C を押すまでパケットを送信する方法を知りたいです。

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

python - 生の入力でキーボード割り込みをキャッチする

raw_input がキーボード割り込みをキャッチするようにするための Python コードが少しあります。この関数でコードを実行すると、完全に正常に動作します。しかし、私のプログラムでそれを実行すると、印刷ステートメントは作成されず、キーボード割り込みがキャッチされていないことが示されます。プログラムは終了を試み、SIGKILL にエスカレートするまで失敗しますが、もちろん正常に動作します。私の推測では、キーボード割り込みが別の場所でキャッチされているため、例外がまったく実行されていません。私の質問は、そのような割り込みが発生する可能性が高い場所と、これをブロックしないようにするにはどうすればよいかということです。私の計画は、プログラムがキーボード割り込みをキャッチしてからプログラム自体を強制終了するまでの間にわずかな遅延を追加して、例外をキャッチする瞬間を与えることでした。

どんなアイデアでも大歓迎

ありがとう!

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

python - 最後に、何があっても、一部のコードがアトミックに実行されるようにしますか?

ユーザーが安全に+KeyboardInterruptを使用して終了できるように、例外をキャッチする Python スクリプトを作成するとします。CtrlC

ただし、すべての重要なアクション (ファイルの書き込みなど) をcatchブロックに入れることはできません。これは、ローカル変数に依存し、その後のCtrl+がブロックCを壊さないようにするためです。

空の ( pass)try部分とその部分内のすべてのコードを含む try-catch ブロックを使用しfinallyて、このスニペットを途中で中断されない可能性のある「アトミックで割り込みセーフなコード」として定義することはうまくいきますか?

例:

この例では、現在生成されているデータ文字列は気にしません。つまり、作成が中断され、書き込みがトリガーされない可能性があります。しかし、書き込みが開始されたら、それを完了する必要があります。それが私が保証したいすべてです。また、finally 句内で書き込みを実行中に例外 (または KeyboardInterrupt) が発生した場合はどうなりますか?

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

python - python multiprocessing BaseManager登録クラスは、Ctrl-Cの直後に接続を失いました

私のpythonプログラムが正しく処理するための制限であると思われるいくつかの問題が発生しています。私のプログラムは、Ctrl-Cを押した直後にBaseManagerの登録済みクラスのメソッドを呼び出すことができませんでした。継承するクラスとして実装された他のプロセスであってもmultiprocessing.Process から影響を受けます。Ctrl-C の後に正しく実行されないプロセスから呼び出したいメソッドがいくつかあります。

たとえば、次のコードは、Ctrl-C の後に TestClass の mt インスタンスを呼び出すことができません。

何か提案はありますか?私のコードに回避策や何か問題がありますか?

前もって感謝します。

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

assembly - アセンブリ 8086 リスニング キーボード割り込み

これとまったく同じ質問があります:描画中にキーボードを聞く

しかし、最初の答え(受け入れられたもの)は、キーボードを一度だけリッスンします。では、コードを変更して、キーボード割り込みを複数回リッスンできるようにするにはどうすればよいですか。

これは私のコードです:

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

python-3.x - Python 3 キーボード割り込みエラー

Ctrl c を押すと、どんなに基本的なものであっても、python 3プログラムでプログラムがクラッシュすることに気付きました。たとえば、次のようになります。

CTRL c を押すと、エラーは KeyboardInterrupt になりますが、これがプログラムをクラッシュさせないようにする方法はありますか?

私がこれをしたい理由は、プログラムをエラー防止にしたいからです。入力に何かを貼り付けたいときに、誤って CTRL c を押してしまうたびに、プログラムをもう一度やり直さなければなりません..これは非常に面倒です.

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

python - Python 例外処理 -- 行に戻って続行

私は Project Euler のコーディングの問題を数多く扱っており、Python は私の頼りになる言語です。通常、多くのプログラムは完了するまでに永遠に時間がかかります。そのため、プログラムの状態に関する診断情報を提供するのに役立つ何かを実装することに取り組んでいます。何かがKeyboardInterrupt発生したときに、プログラムが実行されている時間といくつかの情報を出力できるようにしたいと考えています。まだどれくらい時間がかかるかを把握するのに役立ちます。

これに関する問題は、KeyboardInterruptヒットしたときにCtrl-Cプログラムを終了することです...そして、このコードの構造、またはPythonでまだ見つけていない何かと関係があると思います.

KeyboardInterruptがキャッチされた直後に同じ行でコードを再開したい。

このコードがどのように見えるかの例を次に示します。

誰かがこれを行う目的を理解し、これを行う方法を見つけたり、実行中のコードからブレークを呼び出すこの醜い方法を回避したりするのを手伝ってくれることを願っています。

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

python - サブプロセスで bash を実行すると、「read -s」の待機中に中断された場合、tty の stdout が壊れますか?

@Bakuriu がコメントで指摘しているように、これは基本的にBASH と同じ問題です。入力中に Ctrl+C を押す と、現在の端末が中断されます。 、端末のクリーンアップをうまく処理しているようです。この点で bash が壊れているように見える理由についての回答に興味があります。

そのスクリプトによって開始されたサブプロセスの出力をログに記録するための Python スクリプトがあります。サブプロセスがたまたま bash スクリプトであり、ある時点でread -sビルトイン (入力された-s文字のエコーを防ぐ がキー) を呼び出してユーザー入力を読み取り、ユーザーがスクリプトを中断した場合 (つまり、Ctrl-C によって)、その後、bash は引き続き入力を受け付けますが、出力を tty に復元できません。

これを簡単な例に絞り込みました。

実行./test.pyすると、何らかの入力を待ちます。なんらかの入力をして Enter キーを押すと、スクリプトは期待どおりに入力を返し、エコーします。問題はありません。ただし、すぐに「Ctrl-C」を押すと、Python は のトレースバックを表示してKeyboardInterruptから、bash プロンプトに戻ります。ただし、入力したものは端末に表示されません。ただし、入力reset<enter>すると端末が正常にリセットされます。

ここで何が起こっているのか正確にはわかりません。

更新: Python を使用せずにこれを再現することもできました。strace で bash を実行して、何が起こっているのかを収集できるかどうかを確認しようとしていました。次の bash スクリプトを使用します。

実行strace ./read.shしてすぐに Ctrl-C を押すと、次のようになります。

PID 25487 があった場所read.sh。これにより、端末は同じ壊れた状態のままになります。ただし、strace -I1 ./read.sh単に./read.shプロセスを中断し、通常の壊れていない端末に戻ります。