C ++在Windows中发送简单信号

时间:2011-03-13 13:10:12

标签: c++ windows kill signals pid

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

int kill(pid_t pid, int sig);

如果没有,是否可以根据PID来测试进程是否正在运行?

由于

2 个答案:

答案 0 :(得分:2)

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;
}

答案 1 :(得分:1)

Windows中没有信号。如果要进行真正的查杀,则使用TerminateProcess()。您需要一个进程句柄,从OpenProcess()获取。您需要请求PROCESS_TERMINATE访问权限。 CloseHandle()关闭句柄。