阅读量: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
函数关闭进程和主线程的句柄。