Наблюдение за временем жизни процесса без опроса очень медленное?

#objective-c #macos #cocoa #process #nsworkspace

#objective-c #macos #cocoa #процесс #nsworkspace

Вопрос:

Я использовал метод, описанный Apple для наблюдения за временем жизни процесса без опроса, для наблюдения за произвольными процессами.

Я использовал точный исходный код, упомянутый там, и со всеми тремя методами. Но ответ очень медленный и иногда даже не работает.

Чего-нибудь не хватает в документации?

Комментарии:

1. Последняя редакция этой статьи 2008 года… это как 20 собачьих лет. Какое приложение вы пишете (т. Е. Это приложение с графическим интерфейсом или демон или агент)? Метод NSWorkspace все еще должен работать, но прошло много лет с тех пор, как я его пробовал, и я вижу, что уведомления доставляют некоторую новую информацию начиная с macOS 10.6.

2. Я пишу приложение, которое сообщает демону о запуске или закрытии произвольных процессов.

Ответ №1:

Аааа… вы дали мне ключевое слово, которое я искал. Вы хотите отслеживать процессы, а не приложения. Вы не можете использовать решение NSWorkspace, если пытаетесь перехватить приложения, отличные от AppKit, или процессы командной строки в дополнение к обычным приложениям Macintosh.

Попробуйте сосредоточиться на решении kqueue.

И если это не очень хорошо, посмотрите раздел «Сервис-ориентированная альтернатива» в вашей технической записке Apple. Если вы немного переосмыслите свой подход, возможно, вы сможете использовать launchd для выполнения того, что вы пытаетесь сделать.

Комментарии:

1. Я попробовал решение NSWorkspace для отслеживания приложений Appkit. Время отклика ужасно и ненадежно. Я также пробовал решение kqueue, но оно не реагировало. Может быть, я делаю что-то не так. Я попробую еще раз.

2. Используя kqueue, я могу управлять завершением процесса. Но не запуск процесса. Есть ли у вас какие-либо идеи, как kqueue можно использовать для управления событием запуска?