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 effective user ID of the calling process must
be superuser
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 reenabled
when the space reaches a second configurable threshold.
If the size of the process accounting file reaches 5000 blocks,
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)).
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 simplementation 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 effective user ID
of the calling process is not superuser.
- [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