Windows系统——进程创建

Windows系统——进程创建CreateProcess()

实现代码

  • 父进程
    parent.cpp
/*
author : eclipse
email  : eclipsecs@qq.com
time   : Sun Apr 26 09:20:40 2020
*/
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main(int argc, char const *argv[])
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));

    si.cb = sizeof(si);

    ZeroMemory(&pi, sizeof(pi));

    if (!CreateProcess(NULL,
    "child.exe This is child!",
    NULL,
    NULL,
    FALSE,
    CREATE_NEW_CONSOLE,
    NULL,
    NULL,
    &si,
    &pi)) {
        printf("Create Process error(%d)!\n", GetLastError());
        return -1;
    }

    WaitForSingleObject(pi.hProcess, INFINITE);

    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}

  • 子进程
    child.cpp
/*
author : eclipse
email  : eclipsecs@qq.com
time   : Sun Apr 26 09:23:37 2020
*/
#include<bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[])
{
    printf("%s %s %s\n", argv[1], argv[2], argv[3]);
    system("pause");
    return 0;
}

注意

  • 编译过程
g++ child.cpp -o child
g++ parent.cpp
a.exe

CreateProcess()

  • 返回值
    新建的进程句柄
  • 函数原型
BOOL CreateProcess
(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);

  • 参数
  1. lpApplicationName
    指定可执行文件文件名
  2. lpCommandLline
    命令行参数
  3. lpProcessAttributes
    新进程安全属性
  4. lpThreadAttributes
    线程是否被继承
  5. bInheritHandles
    是否继承父进程句柄
  6. dwCreationFlag
    设置子进程的线程调度的优先级
  7. lpEnvironment
    指向一个新进程的环境块,默认为父进程环境
  8. lpCurrentDirectory
    子进程的工作目录
  9. lpStartupInfo
    决定子进程的主窗体如何显示的STARTUPINFO结构体
  10. lpProcessInformation
    接收子进程的识别信息的PROCESS_INFORMATION结构体

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值