c语言createprocess怎样创建进程

avatar
作者
筋斗云
阅读量:0

在C语言中,你可以使用CreateProcess函数来创建一个新的进程。这个函数是Windows API的一部分,所以你需要包含<windows.h>头文件来使用它。

CreateProcess函数的原型如下:

BOOL CreateProcess(     LPCTSTR lpApplicationName,        // 应用程序的名称     LPSTR lpCommandLine,             // 命令行参数     LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程属性     LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程属性     BOOL bInheritHandles,              // 是否继承句柄     DWORD dwCreationFlags,            // 创建标志     LPVOID lpEnvironment,             // 环境变量     LPCTSTR lpCurrentDirectory,       // 当前目录     LPSTARTUPINFO lpStartupInfo,      // 起始信息     LPPROCESS_INFORMATION lpProcessInformation // 进程信息 ); 

这个函数返回一个布尔值,如果创建进程成功,它将返回TRUE,否则返回FALSE

下面是一个简单的例子,演示了如何使用CreateProcess函数创建一个新的进程并执行一个命令:

#include <stdio.h> #include <windows.h>  int main() {     STARTUPINFO si;     PROCESS_INFORMATION pi;      ZeroMemory(&si, sizeof(si));     si.cb = sizeof(si);     ZeroMemory(&pi, sizeof(pi));      // 启动一个新的进程,该进程将执行 "notepad.exe"     if(!CreateProcess(         NULL,                   // 没有模块名称(使用可执行文件路径作为默认值)         "notepad.exe",          // 要执行的命令行字符串         NULL,                   // 进程属性         NULL,                   // 线程属性         FALSE,                  // 不继承句柄         0,                      // 无创建标志         NULL,                   // 使用父进程的环境块         NULL,                   // 使用父进程的当前目录         &si,                    // 起始信息         &pi)                    // 接收进程信息的指针        ) {         printf("CreateProcess failed (%d)\n", GetLastError());         return 1;     }      // 等待进程执行完毕     WaitForSingleObject(pi.hProcess, INFINITE);      // 关闭进程和主线程的句柄     CloseHandle(pi.hProcess);     CloseHandle(pi.hThread);      return 0; } 

在这个例子中,我们创建了一个新的进程来执行notepad.exe程序。我们使用WaitForSingleObject函数等待新进程执行完毕,然后使用CloseHandle函数关闭进程和主线程的句柄。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!