NAME
acct() — enable or disable process accounting
SYNOPSIS
#include <sys/acct.h>
int acct(const char *path);
DESCRIPTION
The
acct()
system call enables or disables the system's process accounting routine.
If the routine is enabled,
an accounting record is written on an accounting file
for each process that terminates.
Termination can be caused by one of two things:
an
exit()
call or a signal (see
exit(2)
and
signal(5)).
The calling process must have the
ACCOUNTING
privilege to use this call.
path
points to a path name naming the accounting file.
The accounting file format is described in
acct(4).
The accounting routine is enabled if
path
is nonzero and no errors occur during the system call.
It is disabled if
path
is zero and no errors occur during the system call.
When the amount of free space on the file system containing the
accounting file falls below a configurable threshold,
the system prints a message on the console and disables process accounting.
Another message is printed and the process accounting is re-enabled
when the space reaches a second configurable threshold.
If the size of the process accounting file reaches a configurable limit,
records for processes terminating after that point will be silently lost.
However, in that case the
turnacct
command would still sense that process accounting is still enabled.
This loss of records can be prevented with the
ckpacct
command.
ckpacct
and
turnacct
are described in
acctsh(1M)).
Security Restrictions
Some or all of the actions associated with this system call require the
ACCOUNTING
privilege.
Processes owned by the superuser have this privilege.
Processes owned by other users may have this privilege, depending on system
configuration.
See
privileges(5)
for more information about privileged access on
systems that support fine-grained privileges.
RETURN VALUE
acct()
returns the following values:
- 0
Successful completion.
- -1
Failure.
errno
is set to indicate the error.
ERRORS
If
acct()
fails,
errno
is set to one of the following values.
- EACCES
The file named by
path
is not an ordinary file.
- EBUSY
An attempt is being made to enable accounting when it is already enabled.
- EFAULT
path
points to an illegal address.
The reliable detection of this error is implementation dependent.
- ELOOP
Too many symbolic links were encountered in translating the path name.
- ENAMETOOLONG
The accounting file path name exceeds
PATH_MAX
bytes, or the length of a component of the path name exceeds
NAME_MAX
bytes while
_POSIX_NO_TRUNC
is in effect.
- ENOENT
One or more components of the accounting file path name do not exist.
- ENOTDIR
A component of the path prefix is not a directory.
- EPERM
The calling process does not possess the
ACCOUNTING
privilege.
- EROFS
The named file resides on a read-only file system.
- ETXTBSY
path
points to a text file which is currently open.
STANDARDS CONFORMANCE
acct(): SVID2, SVID3, XPG2