# Job

## NAME

job - Control a group of processes

## SYNOPSIS

A job is a group of [processes](process.md) and possibly other (child)
jobs. Jobs are used to track privileges to perform kernel operations (i.e., make
various syscalls, with various options), and track and limit basic resource
(e.g., memory, CPU) consumption. Every process belongs to a single job. All the
jobs on a Fuchsia system form a tree, with every job, except the root job,
belonging to a single (parent) job.

## DESCRIPTION

A job is an object consisting of the following:

+ a reference to a parent job
+ a set of child jobs (each of which has this job as its parent)
+ a set of member processes
+ a set of policies [⚠ not implemented]

Jobs allow "applications" that are composed of more than one process to be
controlled as a single entity.

## SYSCALLS

 - [`zx_job_create()`] - create a new child job.
 - [`zx_process_create()`] - create a new process within a job.
 - [`zx_job_set_critical()`] - set a process as critical to a job.
 - [`zx_job_set_policy()`] - set policy for new processes in the job.
 - [`zx_task_create_exception_channel()`] - listen for task exceptions
 - [`zx_task_kill()`] - cause a task to stop running.

[`zx_job_create()`]: /docs/reference/syscalls/job_create.md
[`zx_job_set_policy()`]: /docs/reference/syscalls/job_set_policy.md
[`zx_process_create()`]: /docs/reference/syscalls/process_create.md
[`zx_task_create_exception_channel()`]: /docs/reference/syscalls/task_create_exception_channel.md
[`zx_task_kill()`]: /docs/reference/syscalls/task_kill.md
