суботу, 1 березня 2014 р.

Не убиваемое приложение на OS X

Небольшая, невинная шалость, которую Вы можете сделать своему другу на его Маке. Инструменты которые нам понадобятся:
- Текстовый редактор;
- Терминал.

Предполагаю что у Вас уже есть некоторые знания по запуску приложений из терминала (launchd) и использованию launchctl инструмента. Все что нужно для не убиваемого приложения (будь то какое-нибудь фоновое приложение) это определить его в качестве сервиса / процесса (службы) и запустить (получится что если вы его убьете (kill), то система автоматически его снова запустит). launchd используется для администрирования службы на OS X. У него есть инструмент launchctl который запускает / останавливает сервис / процессы (службу). Также - каждая служба определяется с помощью plist - файла. Давайте создадим такой файл:
 
 
    Label
    com.apple.SafariService
    ProgramArguments
    
      /Applications/Safari.app/Contents/MacOS/Safari
    
    OnDemand
  
 

Дальше все просто. Мы его обзываем как com.apple.SafariService и делаем его как исполняемое  (даем права на выполнение/запуск) дополнение Safari. Опция OnDemand говорит, что он должен всегда работать. Сохраняем XML как файл с именем com.apple.SafariServicе.plist и помещаем его в папку ~/Library/LaunchAgents. Теперь для "не убиваемой части" - откройте терминал и введите следующую команду:
launchctl load ~/Library/LaunchAgents/com.apple.SafariService.plist
Это запустит Safari, если он не работает. Также - это будет перезапускать Safari как только вы попытаетесь выйти из него. То же самое касается kill - как только вы отправите службе сообщение SIGTERM - ОС будет перезапускать приложение. Вот и все. Удачного издевательства!

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments