创建进程

#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");

}

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

你可能感兴趣的:(创建)