当前位置:首页 > 操作系统 > Windows

windows系统调用 进程终止

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

 

原文:http://www.cnblogs.com/593213556wuyubao/p/3733456.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐