-
Notifications
You must be signed in to change notification settings - Fork 7
acct(2)
Seonghun Lim edited this page Nov 6, 2018
·
4 revisions
acct - 프로세스 통계 켜고 끄기
#include <unistd.h>
int acct(const char *filename);glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):
-
acct(): -
- glibc 2.21부터:
_DEFAULT_SOURCE- glibc 2.19 및 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)- glibc 2.19까지:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
acct() 시스템 호출은 프로세스 통계 수집을 켜거나 끈다. 존재하는 파일의 이름을 인자로 해서 호출하면 통계 수집이 켜진다. 그러면 종료하는 프로세스 각각의 레코드가 종료 시점에 filename에 덧붙는다. NULL 인자는 통계 수집이 꺼지게 한다.
성공 시 0을 반환한다. 오류 시 -1을 반환하며 errno를 적절히 설정한다.
EACCES- 지정한 파일에 대해 쓰기 권한이 거부되었거나,
filename의 경로 선두부의 한 디렉터리에 대해 탐색 권한이 거부되었거나 (path_resolution(7) 참고),filename이 정규 파일이 아니다. EFAULT-
filename이 접근 가능한 주소 공간 밖을 가리키고 있다. EIO- 파일
filename에 쓰는 중 오류. EISDIR-
filename이 디렉터리다. ELOOP-
filename을 해석하는 동안 너무 많은 심볼릭 링크를 만났다. ENAMETOOLONG-
filename이 너무 길다. ENFILE- 열린 파일 총개수에 대한 시스템 전역 제한에 도달했다.
ENOENT- 지정한 파일이 존재하지 않는다.
ENOMEM- 메모리 부족.
ENOSYS- 운영 체제 커널을 컴파일 할 때 BSD 프로세스 통계 기능을 켜지 않았다. 이 기능을 제어하는 커널 구성 매개변수는
CONFIG_BSD_PROCESS_ACCT이다. ENOTDIR-
filename에서 디렉터리인 부분이 실제로는 디렉터리가 아니다. EPERM- 호출 프로세스가 프로세스 통계를 켜기에 충분한 특권을 가지고 있지 않다. 리눅스에서는
CAP_SYS_PACCT역능이 필요하다. EROFS-
filename이 읽기 전용 파일 시스템의 파일을 가리키고 있다. EUSERS- 유휴 파일 구조가 더는 없거나 메모리를 다 썼다.
SVr4, 4.3BSD (POSIX는 아님).
시스템 크래시 발생 시 동작 중인 프로그램들에 대해선 통계 정보가 생성되지 않는다. 특히 종료하지 않는 프로세스에 대한 통계는 절대 기록되지 않는다.
통계 파일에 기록되는 레코드의 구조를 acct(5)에서 기술한다.
2016-03-15