windows系统调用 进程终止

 1 #include "windows.h"
 2 #include "iostream"
 3 #include "stdio.h"
 4 using namespace std;
 5 
 6 static LPCTSTR q_szMutexName="w2kdg.ProcTerm.mutex.Suicide";
 7 
 8 HANDLE StartClone(){
 9     TCHAR szFilename[MAX_PATH];
10     GetModuleFileName(NULL,szFilename,MAX_PATH);
11 
12     TCHAR szCmdLine[MAX_PATH];
13     sprintf_s(szCmdLine,"\"%s\" \"child\"",szFilename);14 
15     STARTUPINFO si;
16 
17     ZeroMemory(reinterpret_cast<void*>(&si),sizeof(si));
18     si.cb=sizeof(si);
19     PROCESS_INFORMATION pi;
20 
21     BOOL bCreateOK=CreateProcess(
22         szFilename,
23         szCmdLine,
24         NULL,
25         NULL,
26         FALSE,
27         CREATE_NEW_CONSOLE,
28         NULL,
29         NULL,
30         &si,
31         &pi
32         );
33 
34     if(bCreateOK){
35         CloseHandle(pi.hProcess);
36         CloseHandle(pi.hThread);
37         return pi.hProcess;
38     }
39 
40     else return INVALID_HANDLE_VALUE;
41 }
42 
43 void Parent(){
44     cout<<"Creating the child process and waited child process to quit."<<endl;
45     HANDLE hchild=StartClone();
46     if(hchild!=INVALID_HANDLE_VALUE)
47     {
48         WaitForSingleObject(hchild,INFINITE);
49         cout<<"The child process had quited."<<endl;
50 
51     }
52 
53     else 
54         cout<<"Create child process failed."<<endl;
55 }
56 
57 
58 void Child(){
59     cout<<"Child id quiting"<<endl;
60     Sleep(5000);
61 
62 }
63 
64 int main(int argc,char * argv[]){
65     if(argc>1&&strcmp(argv[1],"child")==0){
66         Child();
67     }
68     else{
69         Parent();
70     }
71     return 0;
72 
73 }

 

转载于:https://www.cnblogs.com/593213556wuyubao/p/3733456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值