This configuration file only applies to sessions of the type specified. This key is used
in concert with the -S flag to
.Nm launchctl .
-.It Sy ProgramArguments <array of strings>
-This required key maps to the second argument of
-.Xr execvp 3 .
.It Sy Program <string>
-This optional key maps to the first argument of
+This key maps to the first argument of
.Xr execvp 3 .
If this key is missing, then the first element of the array of strings provided to the ProgramArguments will be used instead.
+This key is required in the absence of the ProgramArguments key.
+.It Sy ProgramArguments <array of strings>
+This key maps to the second argument of
+.Xr execvp 3 .
+This key is required in the absence of the Program key. Please note! Many people are confused by this key. Please read
+.Xr execvp 3
+very carefully!
.It Sy EnableGlobbing <boolean>
This flag causes
.Nm launchd
true, then the job will be kept alive as long as the path exists.
If false, the job will be kept alive in the inverse condition. The intent of this
feature is that two or more jobs may create semaphores in the file-system namespace.
+.It Sy OtherJobEnabled <dictionary of booleans>
+Each key in this dictionary is the label of another job. If the value of the key is
+true, then this job is kept alive as long as that other job is enabled. Otherwise,
+if the value is false, then this job is kept alive as long as the other job is disabled.
+This feature should not be considered a substitute for the use of IPC.
.El
.It Sy RunAtLoad <boolean>
This optional key is used to control whether your job is launched once at the time the job is loaded. The default is false.
.Xr umask 2
before running the job. Known bug: Property lists don't support octal, so please convert the value to decimal.
.It Sy TimeOut <integer>
-The recommended time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by
+The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by
.Nm launchd
for use by the job at check in time.
+.It Sy ExitTimeOut <integer>
+The amount of time
+.Nm launchd
+waits before sending a SIGKILL signal. The default value is 20 seconds. The value zero is interpreted as infinity.
+.It Sy ThrottleInterval <integer>
+This key lets one override the default throttling policy imposed on jobs by
+.Nm launchd .
+The value is in seconds, and by default, jobs will not be spawned more than once every 10 seconds.
+The principle behind this is that jobs should linger around just in case they are needed again in the near future. This not only
+reduces the latency of responses, but it encourages developers to amortize the cost of program invocation.
.It Sy InitGroups <boolean>
This optional key specifies whether the job should have
.Xr initgroups 3
be called before running the job.
-The default is false.
+The default is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set.
.It Sy WatchPaths <array of strings>
This optional key causes the job to be started if any one of the listed paths are modified.
.It Sy QueueDirectories <array of strings>
Much like the WatchPaths option, this key will watch the paths for modifications. The difference being that the job will only be started if the path is a directory and the directory is not empty.
+.It Sy StartOnMount <boolean>
+This optional key causes the job to be started every time a filesystem is mounted.
.It Sy StartInterval <integer>
This optional key causes the job to be started every N seconds.
If the system is asleep, the job will be started the next time the computer
This optional key specifies what
.Xr nice 3
value should be applied to the daemon.
+.It Sy AbandonProcessGroup <boolean>
+When a job dies,
+.Nm launchd
+kills any remaining processes with the same process group ID as the job.
+Setting this key to true disables that behavior.
+.It Sy HopefullyExitsFirst <boolean>
+This optional key causes programs to exit earlier during system shutdown.
+This key exists because some jobs do more than flush buffers and exit like
+they're supposed to. The use of this key should be considered a
+temporary solution until the software can be changed to only flush dirty buffers
+and then exit.
+.It Sy HopefullyExitsLast <boolean>
+This optional key causes programs to exit later during system shutdown. This
+key exists because some jobs don't reference count their clients, and therefore
+do not know when it is safe to exit. The use of this key should be considered a
+temporary solution until the software can be changed to properly reference
+count clients.
.It Sy LowPriorityIO <boolean>
This optional key specifies whether the kernel should consider this daemon to be low priority when doing file system I/O.
-.It Sy MachServices <dictionary of booleans>
+.It Sy LaunchOnlyOnce <boolean>
+This optional key specifies whether the job can only be run once and only once.
+In other words, if the job cannot be safely respawned without a full machine
+reboot, then set this key to be true.
+.It Sy MachServices <dictionary of booleans or a dictionary of dictionaries>
This optional key is used to specify Mach services to be registered with the
Mach bootstrap sub-system. Each key in this dictionary should be the name of
-service to be advertised. The value of the key must be a boolean. If the
-boolean is true, the port is recycled, thus leaving clients to remain oblivious
-to the demand nature of job. If the value is set to false, clients receive port
+service to be advertised. The value of the key must be a boolean and set to true.
+Alternatively, a dictionary can be used instead of a simple true value.
+.Bl -ohang -offset indent
+.It Sy ResetAtClose <boolean>
+If this boolean is false, the port is recycled, thus leaving clients to remain oblivious
+to the demand nature of job. If the value is set to true, clients receive port
death notifications when the job lets go of the receive right. The port will be
recreated atomically with respect to bootstrap_look_up() calls, so that clients
can trust that after receiving a port death notification, the new port will
-have already been recreated. Setting the value to false should be done with
-care. Not all clients may be able to handle this behavior. Finally, for the job
-itself, the values will be replaced with Mach ports at the time of check-in
-with
+have already been recreated. Setting the value to true should be done with
+care. Not all clients may be able to handle this behavior. The default value is false.
+.It Sy HideUntilCheckIn <boolean>
+Reserve the name in the namespace, but cause bootstrap_look_up() to fail until the job has checked in with
+.Nm launchd .
+.El
+.Pp
+Finally, for the job itself, the values will be replaced with Mach ports at the time of check-in with
.Nm launchd .
.It Sy Sockets <dictionary of dictionaries... OR dictionary of array of dictionaries...>
This optional key is used to specify launch on demand sockets that can be used to let
consider all descriptors of a given key to be to be effectively equivalent, even though each file descriptor likely represents
a different networking protocol which conforms to the criteria specified in the job configuration file.
.Pp
-The paramters below are used as inputs to call
+The parameters below are used as inputs to call
.Xr getaddrinfo 3 .
.Bl -ohang -offset indent
.It Sy SockType <string>