Программно проверьте, работает ли процесс на Mac

Действительно ли там какой-либо API Carbon/Cocoa/C доступен на Mac, которые я могу использовать для перечисления процессов? Я ищу что-то как EnumProcesses в Windows.

Моя цель состоит в том, чтобы проверить из кода, работает ли процесс (по имени).

Спасибо!

12
задан psychotik 25 March 2010 в 18:01
поделиться

3 ответа

TechZen сообщает: По состоянию на декабрь 2013 г. диспетчер процессов полностью устарел.

Ах, я только что нашел Справочник по диспетчеру процессов

Похоже, GetNextProcess и GetProcessInfo помогают понять, что работает. Как предложил Дейв, GetBSDProcessList можно использовать, если вы ищете демонов, а не только процессы Carbon / Cocoa.

10
ответ дан 2 December 2019 в 04:02
поделиться

В обзоре NSRunningApplicationClass говорится:

NSRunningApplication - это класс для управления и предоставления информации для одного экземпляра приложения. Отслеживаются только пользовательские приложения; это не предоставляет информацию обо всех процессах в системе.

и

Чтобы получить доступ к списку всех запущенных приложений, используйте метод runningApplications в NSWorkspace .

Я бы посоветовал взглянуть на Темы программирования служб рабочей области

3
ответ дан 2 December 2019 в 04:02
поделиться

Это можно сделать двумя способами:

  1. Если это приложение с графическим интерфейсом пользователя со значком Dock, используйте - [NSWorkspace createdApplications] .
  2. Отключите другой процесс (например, ps или top или что-то еще) с помощью NSTask , прочтите результаты и выполните поиск самостоятельно (или пропустите его через grep или что-то еще).
  3. Используйте функцию GetBSDProcessList , описанную здесь: http://developer.apple.com/legacy/mac/library/#qa/qa2001/qa1123.html (у меня успешно использовали это в прошлом)
7
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: