簡體   English   中英

C ++在Windows中發送簡單信號

[英]C++ Sending a simple signal in Windows

Windows上的函數kill()是否等效?

int kill(pid_t pid, int sig);

如果沒有,是否可以根據其PID測試進程是否正在運行?

謝謝

Windows沒有unix意義上的信號。

您可以使用OpenProcess檢查進程是否存在 - 如果成功或因訪問錯誤而失敗,則該進程存在。

bool processExists(DWORD ProcessID) {
  HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, ProcessID);
  if (hProcess != NULL) {
    CloseHandle(hProcess);
    return true;
  }
  // If the error code is access denied, the process exists but we don't have access to open a handle to it.
  return GetLastError() == ERROR_ACCESS_DENIED;
}

Windows中沒有信號。 如果要進行真正的查殺,則使用TerminateProcess()。 您需要一個進程句柄,從OpenProcess()獲取。 您需要請求PROCESS_TERMINATE訪問權限。 CloseHandle()關閉句柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM