.\" Copyright (c) 1992 Drew Eckhardt <drew@cs.colorado.edu>, March 28, 1992
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified by Michael Haardt <michael@moria.de>
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1996-11-04 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2001-06-04 by aeb
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.TH NICE 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
nice \- change process priority
.SH SYNOPSIS
.B #include <unistd.h>
.PP
.BI "int nice(int " inc );
.PP
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.PP
.BR nice ():
_XOPEN_SOURCE
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.SH DESCRIPTION
.BR nice ()
adds
.I inc
to the nice value for the calling thread.
(A higher nice value means a low priority.)
.PP
The range of the nice value is +19 (low priority) to \-20 (high priority).
Attempts to set a nice value outside the range are clamped to the range.
.PP
Traditionally, only a privileged process could lower the nice value
(i.e., set a higher priority).
However, since Linux 2.6.12, an unprivileged process can decrease
the nice value of a target process that has a suitable
.BR RLIMIT_NICE
soft limit; see
.BR getrlimit (2)
for details.
.SH RETURN VALUE
On success, the new nice value is returned (but see NOTES below).
On error, \-1 is returned, and
.I errno
is set appropriately.
.PP
A successful call can legitimately return \-1.
To detect an error, set
.I errno
to 0 before the call, and check whether it is nonzero after
.BR nice ()
returns \-1.
.SH ERRORS
.TP
.B EPERM
The calling process attempted to increase its priority by
supplying a negative
.I inc
but has insufficient privileges.
Under Linux, the
.B CAP_SYS_NICE
capability is required.
(But see the discussion of the
.B RLIMIT_NICE
resource limit in
.BR setrlimit (2).)
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
However, the raw system call and (g)libc
(earlier than glibc 2.2.4) return value is nonstandard, see below.
.\" SVr4 documents an additional
.\" .B EINVAL
.\" error code.
.SH NOTES
For further details on the nice value, see
.BR sched (7).
.PP
.IR Note :
the addition of the "autogroup" feature in Linux 2.6.38 means that
the nice value no longer has its traditional effect in many circumstances.
For details, see
.BR sched (7).
.\"
.SS C library/kernel differences
POSIX.1 specifies that
.BR nice ()
should return the new nice value.
However, the raw Linux system call returns 0 on success.
Likewise, the
.BR nice ()
wrapper function provided in glibc 2.2.3 and earlier returns 0 on success.
.PP
Since glibc 2.2.4, the
.BR nice ()
wrapper function provided by glibc provides conformance to POSIX.1 by calling
.BR getpriority (2)
to obtain the new nice value, which is then returned to the caller.
.SH SEE ALSO
.BR nice (1),
.BR renice (1),
.BR fork (2),
.BR getpriority (2),
.BR getrlimit (2),
.BR setpriority (2),
.BR capabilities (7),
.BR sched (7)
