.\" Copyright (c) 1993 Michael Haardt
.\" (michael@moria.de),
.\" Fri Apr  2 11:32:09 MET DST 1993
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" Modified 1993-07-22 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1993-08-10 by Alan Cox <iiitac@pyramid.swansea.ac.uk>
.\" Modified 1998-11-04 by Tigran Aivazian <tigran@sco.com>
.\" Modified 2004-05-27, 2004-06-17, 2004-06-23 by Michael Kerrisk
.\"
.TH ACCT 2 2016-03-15 "Linux" "Linux Programmer's Manual"
.SH NAME
acct \- switch process accounting on or off
.SH SYNOPSIS
.ad l
.nf
.B #include <unistd.h>
.PP
.BI "int acct(const char *" filename );
.fi
.ad b
.PP
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.PP
.BR acct ():
.nf
    Since glibc 2.21:
.\"		commit 266865c0e7b79d4196e2cc393693463f03c90bd8
        _DEFAULT_SOURCE
    In glibc 2.19 and 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
    Up to and including glibc 2.19:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
.fi
.SH DESCRIPTION
The
.BR acct ()
system call enables or disables process accounting.
If called with the name of an existing file as its argument,
accounting is turned on,
and records for each terminating process are appended to
.I filename
as it terminates.
An argument of NULL causes accounting to be turned off.
.SH RETURN VALUE
On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set appropriately.
.SH ERRORS
.TP
.B EACCES
Write permission is denied for the specified file,
or search permission is denied for one of the directories
in the path prefix of
.I filename
(see also
.BR path_resolution (7)),
or
.I filename
is not a regular file.
.TP
.B EFAULT
.I filename
points outside your accessible address space.
.TP
.B EIO
Error writing to the file
.IR filename .
.TP
.B EISDIR
.I filename
is a directory.
.TP
.B ELOOP
Too many symbolic links were encountered in resolving
.IR filename .
.TP
.B ENAMETOOLONG
.I filename
was too long.
.TP
.B ENFILE
The system-wide limit on the total number of open files has been reached.
.TP
.B ENOENT
The specified file does not exist.
.TP
.B ENOMEM
Out of memory.
.TP
.B ENOSYS
BSD process accounting has not been enabled when the operating system
kernel was compiled.
The kernel configuration parameter controlling this feature is
.BR CONFIG_BSD_PROCESS_ACCT .
.TP
.B ENOTDIR
A component used as a directory in
.I filename
is not in fact a directory.
.TP
.B EPERM
The calling process has insufficient privilege to enable process accounting.
On Linux, the
.B CAP_SYS_PACCT
capability is required.
.TP
.B EROFS
.I filename
refers to a file on a read-only filesystem.
.TP
.B EUSERS
There are no more free file structures or we ran out of memory.
.SH CONFORMING TO
SVr4, 4.3BSD (but not POSIX).
.\" SVr4 documents an EBUSY error condition, but no EISDIR or ENOSYS.
.\" Also AIX and HP-UX document EBUSY (attempt is made
.\" to enable accounting when it is already enabled), as does Solaris
.\" (attempt is made to enable accounting using the same file that is
.\" currently being used).
.SH NOTES
No accounting is produced for programs running when a system crash occurs.
In particular, nonterminating processes are never accounted for.
.PP
The structure of the records written to the accounting file is described in
.BR acct (5).
.SH SEE ALSO
.BR acct (5)
