创建进程

#include <windows.h>
#include <stdio.h>

/*************************************
*DWORD CreateChildProcess(LPSTR szChildProcessCmd)
*功能: 演示创建子进程
*参数: LPSTR szChildProcessCmd 启动子进程命令
*返回值: 成功返回0, 失败返回1
**************************************/
DWORD CreateChildProcess(LPSTR szChildProcessCmd){
    STARTUPINFO si; //startup_info 启动_信息
    PROCESS_INFORMATION pi; //process_information 进程_消息(通知)
    //将启动信息结构清零
    ZeroMemory(&si, sizeof(si));
    //设置结构大小, cb属性应为结构的大小
    si.cb = sizeof(si);
    //将进程信息结构清零
    ZeroMemory(&pi, sizeof(pi));
    //创建子进程, 并判断是否成功
    if (!CreateProcess(NULL,    //使用命令行
        szChildProcessCmd,        //命令行
        NULL,                    //不继承进程句柄 
        NULL,                    //不继承线程句柄
        FALSE,                    //不继承句柄
        0,                        //没有创建标志
        NULL,                    //使用父进程环境变量
        NULL,                    //使用父进程目录作为当前目录
        &si,                    
        &pi)
        ){
    //创建失败
    printf("CreateProcess failed (%d).\n", GetLastError());
    return 1;
    }
    //在创建成功后父进程也可以直接退出, 这里等待子进程执行结束

    //等待子进程结束
    //使用到了通过 PROCESS_INFORMATION 返回的相关信息, hProcess 为子进程句柄
    //父进程也可以不等待子进程运行完成而直接退出
    WaitForSingleObject(pi.hProcess, INFINITE);
    //关闭进程句柄和线程句柄.
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}

//演示进程创建过程
int main(){
    CreateChildProcess("Child.exe abc 123");
    printf("子进程结束!!!");
    system("pause");
}

编译时, 把字符集改成 使用多字节字符集.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。