ОБЗОР
#include <unistd.h>
int acct(const char *filename);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
acct(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
ОПИСАНИЕ
Системный вызов acct() включает или выключает учёт процессов. Если при вызове, в качестве аргумента, указывается имя существующего файла, происходит включение учёта, и при завершении процесса, в файл filename добавляются записи для каждого завершившегося процесса. Если в качестве аргумента указан NULL, то учёт выключается.ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.ОШИБКИ
- EACCES
- Нет прав на запись в указанный файл, или в одном из каталогов в pathname не разрешён поиск (см. также path_resolution(7)), или filename не является обычным файлом.
- EFAULT
- Аргумент filename указывает за пределы доступного адресного пространства.
- EIO
- Ошибка записи в файл filename.
- EISDIR
- filename является каталогом.
- ELOOP
- Во время определения pathname встретилось слишком много символьных ссылок.
- ENAMETOOLONG
- Слишком длинное значение аргумента pathname.
- ENFILE
- Достигнуто максимальное количество открытых файлов в системе.
- ENOENT
- Указанный файл не существует.
- ENOMEM
- Не хватает памяти.
- ENOSYS
- BSD учёт процессов не может быть разрешён, если эта возможность не была включена при компиляции ядра операционной системы. Этой возможностью управляет параметр настройки ядра CONFIG_BSD_PROCESS_ACCT.
- ENOTDIR
- Компонент пути в pathname в действительности не является каталогом.
- EPERM
- Вызвавшему процессу не хватает прав включить учёт процессов. В Linux для этого требуется мандат CAP_SYS_PACCT.
- EROFS
- filename указывает на файл в файловой системе, доступной только для чтения.
- EUSERS
- Закончились свободные файловые структуры или память.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.3BSD (но не POSIX).ЗАМЕЧАНИЯ
Учёт не производится для программ, которые заканчиваются аварийно. В частности, незавершаемые процессы никогда не учитываются.Структура записей, записываемых в файл учёта, описана в acct(5).