Соглашение 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