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