問題タブ [waitforsingleobject]
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.
c++ - win32 process termination detection: WMI vs. WaitForSingleObject
I am writing a windows service (c++) that need to detect specific windows process termination.
I thought about two different approaches to detect the termination:
- Using WMI as described here.
- Using winapi
WaitForSingleObject(hHandle, INFINITE)
function on the process' handle.
The obvious difference is that WMI uses a CALLBACK
function.
What are the other major differences, advantages and disadvantages, between the two approaches?
Thanks!
java - Windows プロセス (C++) から起動しようとすると、.exe ファイル (jarsigner) がハングする
簡単な jarsigner .apk ファイル検証コマンドがあります。
Windowsのコマンドラインから実行すると正常に動作します。
私は通常、特別なクラスを介してアプリケーションで .exe ファイルを実行します。このクラスは、いくつかの (正直なところ、多くの) .exe 呼び出しに対して正常に機能します。(パイプ経由で .exe ファイルの出力を取得し、WaitForSingleObject 関数を介して待機します) プロセスを開始し、たとえば最大 60 秒待機します。
しかし、jarsigner.exe 呼び出しの場合、非常に奇妙な動作が発生しました。
-「jarsigner.exe」などのいくつかの単純なコマンドを開始すると、正常に動作します(1〜3秒で、パイプ経由で出力が得られました)
-検証コマンド (「jarsigner.exe -verify path-to-apk-file」) を開始すると、永遠に待機してもまだ出力が得られません (INFINITE タイムアウトを試行し、かなり待機しました)。Windows cmd を介して同じコマンドを実行すると、動作します (10 ~ 20 秒近く)。
誰かが説明できますか、jarsigner / Windowsプロセスの仕組みを使用する特別なケースはありますか?
c++ - GetExitCodeThread() で取得した値が間違っています
CreateThread()
有効なパラメーターを使用してスレッドを作成しました。単純な条件に基づいて、1 に設定された型変数if-else
を返します。DWORD
次に、関数内:
私はWaitForSingleObject()
INFINITE
嘘をつきます。次に function を呼び出しますGetExitCodeThread()
。
私は何をしても変わらない、異なる価値を手に入れます。常に 6 です。
WaitForSingleObject
また、これらのいずれかを使用する必要があるのか 、GetExitCodeThread
それとも使用する必要があるのか も混乱しています。MSDN では、2 つが互いの代わりになることは言及されていません。ただ、WaitForSingleObject
成功したら画像のスレッドハンドルが解放されるか、最悪の場合は別のスレッドに割り当てられる可能性があると単純に考えています。それならGetExitCodeThread
惨めに失敗するでしょう。
ruby - Ruby Net::Telnet の waitfor() が機能しない
これを修正するさまざまな方法をチェックアウトしましたが、環境に固有のものである可能性があります。Rubyでスクリプトを作成して、リモートサーバーにtelnetでログインし、シェルタイプを入力して(ログイン後のプロンプトで、前に「プロンプト」がありません)、次のプロンプトでユーザーIDを入力します。現在、ユーザーとパスを介してログインしていますが、用語の部分でフリーズしています。私は正規表現、文字列、スリープを使用してから puts("xterm" を使用しようとしましたが、このプロンプトを通過することはできません。ハングアップしているコードのスニペットとそれに沿った出力を次に示します。
出力は次のとおりです。
multithreading - 複数のスレッドが単一の手動キルイベントに依存できますか?
複数のスレッドを持つ MFC コードがあり、それらすべてが異なるパラメーターを使用してサブルーチンを再帰的に呼び出します。サブルーチンの最初で、関数 CheckKillEvent() を呼び出します。
CheckKillEvent が true を返した場合、return() はすぐに返されます。
fyi、h_killEvent は次のように初期化されます。
つまり、手動リセットがあります。
ただし、これらのスレッドは、次のように Kill イベントを設定した後、(文字通り) 永遠に終了するようです。
問題は、複数のスレッドから CheckKillEvent() を呼び出すことに問題があるかどうかです。WaitForSingleObject() はクリティカル セクション内で実行する必要がありますか? それとも、再帰コードが自分自身を呼び出さなくなった時点まで再帰するのが苦手なだけですか?
visual-studio-2010 - 提供されたハンドルが無効であると WaitForSingleObject() が見なすのはなぜですか?
私は Visual Studio 2010 を使用して、標準入力から読み取ろうとする Win32 アプリで作業しています。GetStdHandle(STD_INPUT_HANDLE) から有効なハンドルを取得し、ハンドルをパラメータとして WaitForSingleObject() をすぐに呼び出しますが、戻り値は常に WAIT_FAILED です。ファイル ハンドルの値が 01 であることを確認しました。これは奇妙です。通常、stdin は 0、stdout 1、および stderr 2 であるため、これはおそらく重要な手がかりです。
「エラー ルックアップ」ツールを使用すると、コード (6) はハンドルが無効であることを意味します。VS 出力ウィンドウで、以下のコードから「WAIT_FAILED.GetLastError() が返されました: 6」が表示されます。どんな助けでも大歓迎です。
c++ - スレッド C++ の RegNotifyChangeKeyValue() の WaitForSingleObject()
以下の MSDN の例を処理するスレッドを作成しようとしています。
私は例をテストし、RegOpenKeyExのlpSubKey パラメータのパスのみを変更しましたが、正常に動作しています。
これは、私が作成しようとしている以下のスレッドで、ポップアップ ウィンドウが表示されます。
r6010 中止 ()......
コード:
内部にvoid listenerTest()
は、私が行ったマイナーな変更を加えたMSDN の例があります。
私は他のアプローチも試みましWaitForSingleObject()
た。HANDLE
WaitForSingleObject()
threadTestスレッドとメイン スレッド間の同期は必要ありません。私が達成しようとしているのは、 main の実行中にthreadTestが無限に実行されることだけです。
任意のヘルプが割り当てられます。
ありがとうございました。
java - 外部プロセス終了 Java JNA を検出する方法
JNAを使用してJavaで外部プロセスの終了を検出する方法は? 私のプログラム実行外部アプリケーション1、このアプリケーション1は他のアプリケーション2を起動し、終了後に終了します。Ant 私の仕事は、application2 から終了コードを取得することです。子プロセスのpidを取得して、それを検出してみます。しかし、waitForSingleObject は機能しません。私は何か間違ったことをしていると思います。ヘルプ)