prctl — operations on a process
#include <sys/prctl.h>
int
prctl( |
int | option, |
unsigned long | arg2, | |
unsigned long | arg3, | |
unsigned long | arg4, | |
unsigned long | arg5) ; |
prctl
() is called with a
first argument describing what to do (with values defined in
<
linux/prctl.h
>
and further parameters with a
significance depending on the first one. The first argument
can be:
PR_SET_PDEATHSIG
(since Linux 2.1.57) Set the parent process death
signal of the calling process to arg2
(either a signal
value in the range 1..maxsig, or 0 to clear). This is
the signal that the calling process will get when its
parent dies. This value is cleared upon a fork(2).
PR_GET_PDEATHSIG
(Since Linux 2.3.15) Read the current value of the
parent process death signal into the (int *) arg2
.
PR_SET_DUMPABLE
(Since Linux 2.3.20) Set the state of the flag
determining whether core dumps are produced for this
process upon delivery of a signal whose default
behavior is to produce a core dump. (Normally this flag
is set for a process by default, but it is cleared when
a set-user-ID or set-group-ID program is executed and
also by various system calls that manipulate process
UIDs and GIDs). In kernels up to and including 2.6.12,
arg2
must be
either 0 (process is not dumpable) or 1 (process is
dumpable). Between kernels 2.6.13 and 2.6.17, the value
2 was also permitted, which caused any binary which
normally would not be dumped to be dumped readable by
root only; for security reasons, this feature has been
removed. (See also the description of /proc/sys/fs/suid_dumpable
in
proc(5).)
PR_GET_DUMPABLE
(Since Linux 2.3.20) Return (as the function result) the current state of the calling process's dumpable flag.
PR_SET_KEEPCAPS
(Since Linux 2.2.18) Set the state of the process's
"keep capabilities" flag, which determines whether the
process's effective and permitted capability sets are
cleared when a change is made to the process's user IDs
such that the process's real UID, effective UID, and
saved set-user-ID all become nonzero when at least one
of them previously had the value 0. (By default, these
credential sets are cleared). arg2
must be either 0
(capabilities are cleared) or 1 (capabilities are
kept).
PR_GET_KEEPCAPS
(Since Linux 2.2.18) Return (as the function result) the current state of the calling process's "keep capabilities" flag.
PR_SET_TIMING
(Since Linux 2.6.0-test4) Set whether to use
(normal, traditional) statistical process timing or
accurate timestamp based process timing, by passing
PR_TIMING_STATISTICAL
or
PR_TIMING_TIMESTAMP
to
arg2
.
PR_GET_TIMING
(Since Linux 2.6.0-test4) Return (as the function result) which process timing method is currently in use.
PR_SET_NAME
(Since Linux 2.6.9) Set the process name for the
calling process to arg2
.
PR_GET_NAME
(Since Linux 2.6.11) Get the process name for the
calling process from arg2
.
PR_GET_ENDIAN
(Since Linux 2.6.18, PowerPC only) Return the endian-ness of the calling process.
PR_SET_ENDIAN
(Since Linux 2.6.18, PowerPC only) Set the
endian-ness of the calling process to the value given
in arg2
, which
should be one of the following: PR_ENDIAN_BIG
, PR_ENDIAN_LITTLE
, or PR_ENDIAN_PPC_LITTLE
(PowerPC pseudo
little endian).
PR_SET_UNALIGN
(Only on: ia64, since Linux 2.3.48; parisc, since
Linux 2.6.15; PowerPC, since Linux 2.6.18; Alpha, since
Linux 2.6.22) Set unaligned access control bits to
arg2
. Pass
PR_UNALIGN_NOPRINT
to
silently fix up unaligned user accesses, or
PR_UNALIGN_SIGBUS
to
generate SIGBUS
on
unaligned user access.
PR_GET_UNALIGN
(see PR_SET_UNALIGN
for information on versions and architectures) Get
unaligned access control bits from arg2
.
PR_SET_FPEMU
(Since Linux 2.4.18, 2.5.9, only on ia64) Set
floating-point emulation control bits to arg2
. Pass PR_FPEMU_NOPRINT
to silently emulate
fp operations accesses, or PR_FPEMU_SIGFPE
to not emulate fp
operations and send SIGFPE
instead.
PR_GET_FPEMU
(Since Linux 2.4.18, 2.5.9, only on ia64) Get
floating-point emulation control bits from arg2
.
PR_SET_FPEXC
(Since Linux 2.4.21, 2.5.32, only on PowerPC) Set
floating-point exception mode to arg2
. Pass PR_FP_EXC_SW_ENABLE
to use FPEXC for
FP exception enables, PR_FP_EXC_DIV
for floating point
divide by zero, PR_FP_EXC_OVF
for floating point
overflow, PR_FP_EXC_UND
for floating point underflow, PR_FP_EXC_RES
for floating point
inexact result, PR_FP_EXC_INV
for floating point
invalid operation, PR_FP_EXC_DISABLED
for FP exceptions
disabled, PR_FP_EXC_NONRECOV
for async
non-recoverable exception mode, PR_FP_EXC_ASYNC
for async recoverable
exception mode, PR_FP_EXC_PRECISE
for precise
exception mode.
PR_GET_FPEXC
(Since Linux 2.4.21, 2.5.32, only on PowerPC) Get
floating-point exception mode from arg2
.
PR_GET_DUMPABLE
and
PR_GET_KEEPCAPS
return 0 or 1
on success. All other option
values return 0 on
success. On error, −1 is returned, and errno
is set appropriately.
The value of option
is not recognized,
or it is PR_SET_PDEATHSIG
and arg2
is not
zero or a signal number.
This call is Linux-specific. IRIX has a prctl
() system call (also introduced in
Linux 2.1.44 as irix_prctl on the MIPS architecture), with
prototype
ptrdiff_t prctl
(int option
,int arg2
,int arg3
);
and options to get the maximum number of processes per user, get the maximum number of processors the calling process can use, find out whether a specified process is currently blocked, get or set the maximum stack size, etc.
This page is part of release 2.79 of the Linux man-pages
project. A
description of the project, and information about reporting
bugs, can be found at
http://www.kernel.org/doc/man-pages/.
Copyright (C) 1998 Andries Brouwer (aebcwi.nl) and Copyright (C) 2002 Michael Kerrisk <mtk.manpagesgmail.com> and Copyright Guillem Jover <guillemhadrons.org> 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. Modified Thu Nov 11 04:19:42 MET 1999, aeb: added PR_GET_PDEATHSIG Modified 27 Jun 02, Michael Kerrisk Added PR_SET_DUMPABLE, PR_GET_DUMPABLE, PR_SET_KEEPCAPS, PR_GET_KEEPCAPS Modified 2006-08-30 Guillem Jover <guillemhadrons.org> Updated Linux versions where the options where introduced. Added PR_SET_TIMING, PR_GET_TIMING, PR_SET_NAME, PR_GET_NAME, PR_SET_UNALIGN, PR_GET_UNALIGN, PR_SET_FPEMU, PR_GET_FPEMU, PR_SET_FPEXC, PR_GET_FPEXC |