Соглашение Daemon vs User Agent в OSX

Я разрабатываю приложение, которое будет периодически загружать файлы с удаленного сервера для пользователя. Мне интересно, должен ли я, на языке OSX, использовать демон, т.е. он будет работать до тех пор, пока OSX запущен, или пользовательский агент, то есть он будет работать, пока в систему входит конкретный пользователь. Есть ли соглашение?? Есть ли какие-то правила, которые нужно соблюдать, думая об этом? Я, конечно же, не хочу соглашаться с тем, что мое приложение должно делать что-то, чего пользователь не ожидает.

Кроме того, для таких фоновых процессов может показаться, что приложение отображается в строке состояния. Например, и Google диск, и Mozy на моем компьютере, которые отслеживают изменения и загружают в фоновом режиме, оба представлены в строке состояния. Это то, что я должен делать с моим приложением?

2 ответа

Решение

Существует абсолютно соглашение, daemon обычно запускается от имени пользователя root или специального пользователя (mysql, www), и агент работает как пользователь...

не имеет значения, как долго они могут жить и т.д., как daemon может быть как долго httpd, ftpdи т. д. или запущен как раз вовремя для использования, как в вспомогательном инструменте.

от man launchd:

В лексиконе launchd "демон" по определению является общесистемной службой, для которой существует один экземпляр для всех клиентов. "Агент" - это служба, которая работает для каждого пользователя. Демоны не должны пытаться отображать пользовательский интерфейс или взаимодействовать напрямую с сеансом входа пользователя в систему. Любая работа, связанная с взаимодействием с пользователем, должна выполняться через агентов.

так что вы можете смешать с каким-то IPC Как и в случае резервного копирования, демон может отправлять сообщения в строку состояния приложения, которое запускается от имени и агента вашего пользователя.

- программа (.plist + двоичный файл), работающая в фоновом режиме (например, служба в Windows)

Daemon это UNIX Daemonбез графического интерфейса. запускает его при запуске системы (от имени root). * также является демоном - pid равен 1, и он создает все остальные процессы. Обычно у демонов есть -dсуффикс. Например - принтер, Bluetooth ...

Agent - это UNIX daemonкоторый может работать с графическим интерфейсом через оконный сервер. начинается agentот имени пользователя после входа в систему с определенными правами пользователя. Например Календарь, Skype ...

launchd знает о демонах на основе .plist в

      User Agents     ~/Library/LaunchAgents         specific user
Global Agents   /Library/LaunchAgents          all users
System Agents   /System/Library/LaunchAgents   MacOS

Global Daemons  /Library/LaunchDaemon          installed apps
System Daemons  /System/Library/LaunchDaemons  MacOS

[Шаг Java Daemon]

Другие вопросы по тегам