問題タブ [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.
sockets - キーボード割り込みの処理
REPLで最小限の TCP サーバーを実行していSML/NJ
ますが、キーボード割り込みでリスナー ソケットを適切に閉じる方法を知りたいと思っています。サーバーの簡素化されたバージョンは
問題は、ポートでリッスンしているこのサーバーを起動し、キーボード割り込みでキャンセルしてから、同じポートで再起動しようとすると、エラーが発生することです。
そのため、エラーが発生したときにリッスン ソケットを閉じられるようにしたいと考えています。Interrupt
キーボード割り込みを発行するとREPLに表示されるので、それInterrupt
がキャッチする予定の例外のコンストラクターであると想定しました。ただし、適切なhandle
行をacceptLoop
orに追加serve
しても、私が望むことはできないようです。
(その後、REPLで)
変数 ( handle x => (Socket.close s; raise x)
) またはワイルドカード ( handle _ => Socket.close s
) 例外一致で同じことを行うと、上記と同じ効果があります。
python - ループ内のタイムアウト付きのユーザー入力
タスクを実行し、ユーザーに応答を求めるループ python 関数を作成しようとしています。ユーザーが指定された時間内に応答しない場合、シーケンスが繰り返されます。
これは、次の質問に大まかに基づいています: raw_input に時間制限を設定する方法
タスクは で表されsome_function()
ます。タイムアウトは秒単位の変数です。次のコードには 2 つの問題があります。
raw_input プロンプトは、ユーザーがプロンプトを出すかどうかに関係なく、指定された 4 秒後にタイムアウトしません。
'q' の raw_input が入力されると (入力されたものはすべて文字列として自動的に入力されることがわかっているため、'' なしで)、関数はループを終了しません。
`
`
python - PyDev コンソールで実行中のコマンドを停止する
私は PyDev コンソールを使用して長いスクリプトを実行していますが、コマンドの途中で停止したいことがよくあります。通常の python シェルで ctrl+c を押すと、キーボード割り込みでコマンドが停止します。しかし、PyDev コンソールでは代わりにテキスト コピーを行います。
このコンソールでコマンドを終了せずに停止するにはどうすればよいですか?
python - クラス内にデコレータを作成することは可能ですか?
または、私がやろうとしていることの代替ソリューションを考えることができるかもしれません. 基本的に、各関数をきちんとクリーンアップする関数があるため、 KeyboardInterruptエラーをインターセプトするために try/except ブロックでラップしたい関数の束を持つクラスがあります。
各関数に巨大な try catch ブロックを配置する代わりに、それを行うデコレータを作成できると考えましたが、いくつかの問題が発生しています。これまでのところ、私はこのようなものを持っています
これを実行したときの問題は、エラーが発生することです
これは可能ですか?より良い方法はありますか、それとも実際に各関数の内部に try/except ブロックを配置する必要がありますか?
python - Python sys.exit() が Windows 7 コマンド プロンプトで機能しない
だから私はあなたが期待するようにコマンドプロンプトで実行するpythonスクリプトを持っています
スクリプト内には、Ctrl+C をインターセプトする行があり、いくつかのことを片付けてスクリプトをシャットダウンすることになっています。
しかし、実際にはプログラムを終了していないようです。メッセージが出力されるので、その割り込み信号を取得していることがわかりますが、コマンドプロンプトで制御を戻すことができず、タスクマネージャーを見ると、まだ実行中のpythonプロセスが表示されます。そのプロセスを終了して初めて、私はコントロールを取り戻すことができます。実際、プログラムが中断されることなく正常に終了したとしても、プロセスは残ります。
私のプログラムは子スレッドを生成します。そのため、例外ではないと聞いた他のメソッドよりもsys.exit()を使用し、より突然終了します。
私は何か間違ったことをしていますか?これを行うクロスプラットフォームの方法はありますか (これは私が sys.exit() だと思っていたものです)?
編集:だから私は問題を切り分けました。小さなテスト スクリプトを作成しましたが、スレッドを作成しても死なず、プログラムが終了しないようです。セットアップを表示するために初期コードを変更しました。
c - インライン アセンブリ内で C で宣言された変数を使用する方法
以下のインライン アセンブリ コード内で変数 ret を使用する方法を理解しようとしていますが、このエラーが引き続き発生します: 'ret への未定義の参照です。
python - Python 3.4.3 KeyboardInterrupt は機能しますが、そのブロック内でコードを実行しません
私はいくつかの Python チュートリアルを実行して、言語について可能な限り多くのことを学ぼうとしていますが、例外処理に問題があります。を使用して、Windows 10 の cmd でコードを実行していますPython 3.4.3
。具体的には、KeyboardInterrupt
ブロックは Ctrl + C が押されたときに何も出力しません。それは必ずしも重要ではありませんがKeyboardInterrupt
、ファイルへの書き込みなど、他のアクションを実行する必要がある場合を考えています。
最初のユーザー入力中に Ctrl + C を押すと、「中断されました」というメッセージを出力する代わりに、出力は次のようになります。
Please enter a Length : Traceback (most recent call last):
私はWindows 10にいて、cmdでコードを実行しています。何か案は?