プロが教えるわが家の防犯対策術!

CreateProcessで作成したプロセスに対して(process_info)
beginthreadexで(1)のようにスレッドを生成した場合、
(2)のWaitForSingleObjectがうまく動作しません。スレッドが
そこで終了してしまいます。しかし、(3)を(1)の後に挿入してあげると
WaitForSingleObjectがうまく動作します。

このような現象について解決方法、もしくは推測などよいので
ご教授願います。


(1)
(HANDLE)_beginthreadex(NULL, 0, testThread, process_info, 0, &threadID);

(2)
static unsigned __stdcall testThread(void* args){

WaitForSingleObject(process_info.hProcess, INFINITE);

}

(3)sleep(5000);

A 回答 (1件)

sleepを入れるとうまくいくというのがよくわからないです。


WaitForSingleObjectは呼び出しが失敗するのかそれとも
INFINITEで帰ってこないのでしょうか。
いずれにせよ、WaitForSingleObjectの引数の値を確認してみてください。

ところで上の(1)でprocess_infoを値渡ししているように見えるのですが
ここは&process_infoとするかprocess_info.hProcessを渡すべきなのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!