17

コマンドプロンプトがプロセスを実行しているときに、プロセスが停止し、プロセスもスリープしているシナリオに遭遇した人はいますか? 次にEnter、cmd ウィンドウでキーを押すと、プロセスが続行されます。

これを回避する方法はありますか?またはこれは処理できますか??

4

3 に答える 3

18

他の答えは間違っています!Windows コンソールには、テキストを選択するための「マーク モード」と呼ばれる別のモードがあります。そのモードでは、画面がフリーズし、テキストがバッファに入り、バッファがいっぱいになると、実行中のプロセスがブロックされます

マークモード

クイック編集モードが有効になっている場合 (デフォルトでは、古い Windows では無効になっていますが、Windows 10 では有効になっています)、コンソール ウィンドウ内をクリックすると、マーク モードがアクティブになり、観察した結果が得られます。

誤ってコンソールをクリックしてコマンドを停止するのは非常に簡単です。Enterまたはを押すとEsc、選択したテキストがクリップボードにコピーされ、マーク モードが終了するため、プロセスが再度実行されます。ここでは、優先度はまったく関係ありません。バッファがいっぱいになると、優先度に関係なく、マーク モードを終了するまでプロセスが永久にブロックされるためです。いくつかの入力がある場合、コンソールは優先度を変更するために何もしません。大量のデータを出力するアプリを最優先で開いてコンソールをクリックすると、CPU がアイドル状態であってもアプリは無期限にブロックされます

Windows 8 コンソールでの QuickEdit モード設定の例を次に示します。

コマンド

これを修正するには、必要がなければQuickEdit モードを無効にします。この場合、コンテキスト メニューを開いて [編集] > [マーク] を選択する必要があるため、コピーはより面倒になります。独自のコンソール アプリケーションを作成している場合はENABLE_QUICK_EDIT_MODE、 withを設定して QuickEdit モードを無効にすることもできます。SetConsoleMode()

こちらもご覧ください

于 2020-06-03T03:06:27.127 に答える
2

他のプロセスがすべてのサイクルを吸い込んで優先度が高い場合、プロセスが停止する可能性があります。ユーザーの入力によってプリオ ブーストが与えられる可能性があるため、再び開始されます。詳細については、 https: //docs.microsoft.com/en-us/windows/win32/procthread/priority-boosts のMicrosoft Docs を参照してください。

于 2012-12-02T18:25:04.247 に答える