Hi Graham,

Please *do not* shell out to launchctl. It's better to keep using the 
deprecated SM functions than to run launchctl. Sorry, but replacements are not 
yet available.

There isn't presently API for a system-wide LaunchDaemon to open a Mach IPC or 
XPC connection to a LaunchAgent, which I'd guess is closer to what you'd really 
like to do? This would be a good enhancement request, please file one! Radars 
from developers are always good ammunition for trying to schedule our 
development time. (Coincidentally, now is a very good time for this particular 
API request.)

Another approach is for the LaunchAgents to add a LaunchEvent (man xpc_events) 
for a notifyd (man notify_post) notification. When the daemon wishes for an 
agent to start, it will post a notification; the LaunchEvent will start agents 
(in all the running graphical user sessions) in response to the notification; 
the agents will all check in with the daemon over MIG or XPC when their 
xpc_event handler fires; and the daemon will ask the appropriate agent to 
launch a process in the graphical user session. Combined with Pressured Exit 
aka idle-exit aka Sudden Termination, this would allow your agents to run only 
when they are needed without worrying about loading/removing their plists.

> On Oct 18, 2016, at 08:32, Graham Miln <graham.m...@gmail.com> wrote:
> 
> In macOS 10.12's ServiceManagement/ServiceManagement.h the following 
> functions are marked as deprecated since macOS 10.10:
> 
> - SMJobSubmit
> - SMJobRemove
> - SMCopyAllJobDictionaries
> 
> The header mentions replacements will be provided by libxpc. Are replacements 
> available or on the way?
> 
> I have a system wide daemon that would like to programmatically launch a 
> process in a graphical user session. At the moment, our LaunchAgents managed 
> helper process is always running. Ideally, it would be good to launch and 
> exit the helper on-demand.
> 
> I believe this can now be done with `launchctl bootstrap|bootout gui/<uid>` 
> on the command line. Should the daemon call out to the launchctl tool?
> 
> Kind regards,
> 
> Graham
> _______________________________________________
> launchd-dev mailing list
> launchd-dev@lists.macosforge.org
> https://lists.macosforge.org/mailman/listinfo/launchd-dev

_______________________________________________
launchd-dev mailing list
launchd-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/launchd-dev

Reply via email to