Как я могу получить идентификатор процесса? Мне нужен идентификатор, чтобы убить этот процесс. Я знаю название процесса.
Спасибо!
Как я могу получить идентификатор процесса? Мне нужен идентификатор, чтобы убить этот процесс. Я знаю название процесса.
Спасибо!
Лучший подход - использовать - [NSWorkspace createdApplications] для приложений 10.5 и - [NSWorkspace runningApplicattions] для приложений 10.6+. Один возвращает словарь с указанными ключами, включая идентификатор процесса, имя пакета и информацию о местоположении (если доступно), другой - NSRunningApplication.
Во-первых, имя процесса не однозначно идентифицирует процесс. Может быть много процессов с одним и тем же именем, или процессы могут даже изменять свое имя, как вы их видите (т.е. сервер PostgreSQL разветвляет и изменяет argv [0], чтобы вы могли видеть, кто главный, кто рабочий процесс и т. Д.). Но в любом случае вам понадобится API для перечисления процессов и получения их сведений - procps сделает это за вас.
ОБНОВЛЕНИЕ: О, я не заметил OSX в первый раз. Для OS X вы должны использовать NetBSD API (не спрашивайте). См. KVM (Библиотека доступа к данным ядра) документация. API другой, идея все та же.
Быстрый взлом: создайте вызов оболочки для killall, который убивает процесс по имени.
Используйте 1_
NSArray *runningApplications = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.bundleIdentifier"];
if (runningApplications.count == 1) {
NSRunningApplication *app = runningApplications[0];
pid = [app processIdentifier];
}
Примечание. -[NSWorkspace launchedApplications]
не рекомендуется для версии 10.6 и более поздних версий.
getpid
- person Andrei   schedule 02.06.2011