溫馨提示×

c語言createprocess怎樣處理錯誤

小樊
140
2024-10-18 07:07:18
欄目: 編程語言

在C語言中,使用CreateProcess函數創建進程時,可以通過檢查函數的返回值來處理錯誤。CreateProcess函數返回一個BOOL值,如果函數執行成功,返回TRUE;否則返回FALSE。此外,該函數還會設置一個指向DWORD類型變量的指針dwCreationFlags,用于接收創建進程時的錯誤代碼。

以下是一個簡單的示例,演示了如何使用CreateProcess函數并處理可能的錯誤:

#include <stdio.h>
#include <windows.h>

int main() {
    STARTUPINFOW si;
    PROCESS_INFORMATION pi;
    BOOL bSuccess;

    // 初始化STARTUPINFO結構體
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);

    // 初始化PROCESS_INFORMATION結構體
    ZeroMemory(&pi, sizeof(pi));

    // 創建進程
    bSuccess = CreateProcessW(NULL,   // 使用系統默認設置
        L"C:\\Windows\\System32\\notepad.exe", // 要啟動的程序的路徑
        NULL,           // 進程屬性
        NULL,           // 線程屬性
        FALSE,          // 不繼承句柄
        0,              // 無創建標志
        NULL,           // 使用父進程的環境塊
        NULL,           // 使用父進程的當前目錄
        &si,            // STARTUPINFO指針
        &pi)           // PROCESS_INFORMATION指針
        ;

    // 檢查CreateProcess是否成功
    if (!bSuccess) {
        printf("CreateProcess failed (%lu).\n", GetLastError());
        return 1;
    }

    // 等待進程執行完畢
    WaitForSingleObject(pi.hProcess, INFINITE);

    // 關閉進程和主線程的句柄
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    printf("Process created successfully.\n");
    return 0;
}

在這個示例中,我們首先初始化了STARTUPINFOWPROCESS_INFORMATION結構體,然后調用CreateProcessW函數創建一個新的進程。如果CreateProcess函數返回FALSE,我們使用GetLastError函數獲取錯誤代碼,并輸出相應的錯誤信息。如果進程創建成功,我們等待進程執行完畢,然后關閉進程和主線程的句柄。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女