在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
函數關閉進程和主線程的句柄。