読者です 読者をやめる 読者になる 読者になる

CreateProcess

CreateProcessは、プロセスを作成するWindowsAPI・・・。

CreateProcess 関数

MainProcessプロジェクトとSubProcessプロジェクトを作成し、MainProcess側からCreateProcessを使ってSubProcessを実行するようにしてみる・・・。

MainProcess側は、

"MainProcess Start!"を出してから、CreateProcessで新しいプロセス生成・・・。
PROCESS_INFORMATION構造体やSTARTUPINFO構造体を用意して、CreateProcessに渡す・・・。
いろいろ設定はあるのだが、今回は最低限で・・・。
あとは、実行ファイル名の"SubProcess.exe"ぐらい・・・。
また、今回はスレッドハンドルは使わないのでCloseHandleでpi.hThreadを閉じてる・・・。

Sleepで60秒(60000ミリ秒)待って、

pi.hProcessを閉じて、"MainProcess End!"を出力・・・。

SubProcess側は、

"SubProcess Start!"を出力してから、30秒待つ・・・。
そのあと、"SubProcess End!"を出力・・・。
つまり、SubProcess側のほうが30秒先に終わる・・・。

スタートアッププロジェクトはMainProcessにして実行・・・。

MainProcess Start!
SubProcess Start!

MainProcessが起動し、そのあとSubProcessが起動・・・。
SubProcessが終わる前に、タスクマネージャを見ると、

f:id:BG1:20160124110103p:plain

MainProcess.exeとSubProcess.exeがいる・・・。

30秒たつと、

SubProcess End!

が出る・・・。

タスクマネージャーは、

f:id:BG1:20160124110340p:plain

MainProcess.exeだけになってる・・・。

でMainProcess.exeも終わると、

MainProcess End!
続行するには何かキーを押してください . . .

が出る・・・。
もうMainProcess.exeもいない・・・。

Sample/MainProcess.cpp at master · bg1bgst333/Sample · GitHub
Sample/SubProcess.cpp at master · bg1bgst333/Sample · GitHub