C ++ Отправка простого сигнала в Windows - PullRequest
4 голосов
/ 13 марта 2011

есть ли эквивалент функции kill () в Windows?

int kill(pid_t pid, int sig);

Если нет, можно ли будет проверить, выполняется ли процесс на основе его PID?

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

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 голос
/ 13 марта 2011

Нет сигналов в Windows. Если истинное убийство предназначено, тогда используйте TerminateProcess (). Вам нужен дескриптор процесса, получите его из OpenProcess (). Вам нужно будет запросить право доступа PROCESS_TERMINATE. CloseHandle (), чтобы закрыть ручку.

...