x86_64 Linux 시스템 콜 전체 목록을 13개 카테고리로 정리합니다. 각 항목마다 syscall 번호, 이름, C 함수 시그니처, 한국어 설명을 제공하여 빠른 조회가 가능합니다. 동작 원리와 진입 경로는 시스템 콜 (System Call) 문서를 참고하세요.
참고: 이 페이지는 "무엇이 있는가"를 다루는 레퍼런스입니다. "어떻게 동작하는가"(SYSCALL/SYSRET 진입 경로, SYSCALL_DEFINE, vDSO, seccomp 등)는 시스템 콜 (System Call)을 참고하세요.
syscall 번호는 arch/x86/entry/syscalls/syscall_64.tbl 기준이며 커널 버전에 따라 달라질 수 있습니다.
파일 오프셋을 변경하지 않고 지정 위치에 씁니다. O_APPEND 플래그와 함께 사용 시 offset이 무시됩니다.
19
readv
ssize_t readv(int fd, const struct iovec *iov, int iovcnt)
분산된 버퍼 배열(scatter)로 읽기를 수행합니다. 헤더+바디 분리 처리 시 syscall 횟수를 줄일 수 있습니다.
20
writev
ssize_t writev(int fd, const struct iovec *iov, int iovcnt)
분산된 버퍼 배열(gather)로 쓰기를 수행합니다. 소켓에서 헤더+페이로드를 하나의 syscall로 전송할 때 유용합니다.
40
sendfile
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
파일을 소켓으로 zero-copy 전송합니다. 커널이 직접 파일 → 소켓 버퍼로 복사하여 유저 공간 왕복을 생략합니다. nginx/Apache의 정적 파일 전송에 사용합니다.
76
truncate
int truncate(const char *path, off_t length)
파일 크기를 length로 자릅니다. 크게 하면 스파스 파일(hole)이 됩니다.
77
ftruncate
int ftruncate(int fd, off_t length)
이미 열린 fd의 파일 크기를 변경합니다. 쓰기 권한으로 열려 있어야 합니다.
257
openat
int openat(int dirfd, const char *path, int flags, mode_t mode)
dirfd를 기준으로 상대 경로의 파일을 엽니다. AT_FDCWD를 넣으면 cwd 기준. TOCTOU 취약점 방지에 권장됩니다 (POSIX.1-2008).
285
fallocate
int fallocate(int fd, int mode, off_t offset, off_t len)
파일에 디스크 공간을 미리 할당하거나 구멍(hole)을 만듭니다. FALLOC_FL_KEEP_SIZE로 파일 크기 유지, FALLOC_FL_PUNCH_HOLE로 스파스 홀을 만듭니다.
326
copy_file_range
ssize_t copy_file_range(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags)
두 파일 사이에 데이터를 커널 내에서 복사합니다. Btrfs/XFS의 reflink를 활용하면 실제 복사 없이 메타데이터만 변경합니다.
open() / openat() 플래그 (flags 인자)
플래그
값(8진수)
설명
O_RDONLY
0
읽기 전용으로 엽니다.
O_WRONLY
01
쓰기 전용으로 엽니다.
O_RDWR
02
읽기/쓰기 모두 가능하게 엽니다.
O_CREAT
0100
파일이 없으면 생성합니다. mode 인자로 권한을 지정합니다.
O_EXCL
0200
O_CREAT와 함께 사용 시 파일이 이미 있으면 EEXIST로 실패합니다 (원자적 생성).
O_TRUNC
01000
파일을 열면서 길이를 0으로 자릅니다.
O_APPEND
02000
쓸 때마다 파일 끝으로 이동합니다 (원자적, 로그 파일에 적합).
O_NONBLOCK
04000
비블로킹 모드로 엽니다. 데이터 없을 때 EAGAIN 반환.
O_SYNC
04010000
write마다 스토리지에 동기적으로 플러시합니다 (데이터+메타데이터).
O_DSYNC
010000
데이터만 동기적으로 플러시합니다 (메타데이터 제외, O_SYNC보다 빠름).
O_CLOEXEC
02000000
execve() 시 fd를 자동으로 닫습니다 (fd 누수 방지, 권장).
O_DIRECTORY
0200000
디렉터리만 열고, 파일이면 ENOTDIR 반환합니다.
O_NOFOLLOW
0400000
심볼릭 링크를 따라가지 않습니다 (보안 목적).
O_TMPFILE
020200000
이름 없는 임시 파일을 생성합니다. linkat()로 나중에 이름을 붙일 수 있습니다.
O_PATH
010000000
파일을 열지 않고 경로 참조용 fd만 얻습니다 (fstat, openat 등에만 사용 가능).
O_DIRECT
040000
페이지 캐시를 우회하여 직접 I/O를 수행합니다. 정렬 제약 있음.
기본 파일 I/O 패턴
/* open → read → write → close 기본 패턴 */int fd = openat(AT_FDCWD, "file.txt", O_RDONLY | O_CLOEXEC);
if (fd < 0) { perror("openat"); exit(1); }
char buf[4096];
ssize_t n;
while ((n = read(fd, buf, sizeof(buf))) > 0) {
/* 부분 쓰기 처리: write는 요청보다 적게 쓸 수 있음 */ssize_t written = 0;
while (written < n) {
ssize_t w = write(STDOUT_FILENO, buf + written, n - written);
if (w < 0) { perror("write"); break; }
written += w;
}
}
if (n < 0) perror("read");
close(fd); /* EINTR에도 fd는 닫혀있으므로 재시도 금지 *//* sendfile: 파일 → 소켓 zero-copy */off_t off = 0;
sendfile(sock_fd, file_fd, &off, file_size);
/* pread/pwrite: 멀티스레드에서 안전한 위치 지정 I/O */ssize_t r = pread64(fd, buf, 512, offset); /* lseek 불필요 */
파일 디스크립터 관리
프로세스마다 고유한 파일 디스크립터 테이블을 가집니다. fd는 커널 내 struct file 객체에 대한 인덱스이며, 0(stdin), 1(stdout), 2(stderr)는 기본으로 할당됩니다. fork() 시 fd 테이블이 복사되고, execve() 시 O_CLOEXEC 설정된 fd는 자동으로 닫힙니다.
번호
이름
시그니처
설명
16
ioctl
int ioctl(int fd, unsigned long request, ...)
디바이스 드라이버와 특수 파일에 대한 제어 명령을 전달합니다. 파일시스템(FIOCLEX, FIONREAD), 터미널(TIOCGWINSZ), 네트워크(SIOCGIFADDR), 블록장치(BLKGETSIZE64) 등에 광범위하게 사용됩니다.
32
dup
int dup(int oldfd)
fd를 복제하여 사용 가능한 가장 낮은 번호의 새 fd를 반환합니다. 두 fd는 같은 struct file을 참조하므로 f_pos와 플래그를 공유합니다.
33
dup2
int dup2(int oldfd, int newfd)
oldfd를 지정한 newfd로 복제합니다. newfd가 이미 열려있으면 원자적으로 닫고 덮어씁니다. 셸 리다이렉션(2>&1)에 사용합니다.
72
fcntl
int fcntl(int fd, int cmd, ...)
fd의 속성 조회/변경(F_GETFL/F_SETFL), fd 플래그(F_GETFD/F_SETFD), fd 복제(F_DUPFD), POSIX 파일 잠금(F_SETLK/F_GETLK), 시그널(F_SETOWN/F_SETSIG) 등 다용도 제어 syscall입니다.
73
flock
int flock(int fd, int operation)
파일 전체에 advisory 잠금(LOCK_SH=공유/LOCK_EX=배타/LOCK_UN=해제)을 설정합니다. NFS에서는 동작하지 않습니다. LOCK_NB로 비블로킹 시도 가능.
int memfd_create(const char *name, unsigned int flags)
이름 없는 익명 파일을 생성합니다. tmpfs 기반이며 ftruncate+mmap으로 공유 메모리로 활용합니다 (MFD_CLOEXEC, MFD_ALLOW_SEALING).
fcntl() 주요 명령 (cmd 인자)
cmd
설명
F_DUPFD
arg 이상의 가장 낮은 번호로 fd를 복제합니다.
F_DUPFD_CLOEXEC
F_DUPFD + O_CLOEXEC 플래그를 원자적으로 설정합니다.
F_GETFD
fd 플래그(FD_CLOEXEC) 를 가져옵니다.
F_SETFD
fd 플래그를 설정합니다. arg에 FD_CLOEXEC=1 또는 0.
F_GETFL
파일 상태 플래그(O_NONBLOCK, O_APPEND 등)를 가져옵니다.
F_SETFL
파일 상태 플래그를 변경합니다. O_NONBLOCK, O_ASYNC만 변경 가능.
F_GETLK
파일 잠금 상태를 확인합니다 (POSIX advisory lock).
F_SETLK
파일 잠금을 설정/해제합니다. 즉시 실패 가능 (비블로킹).
F_SETLKW
파일 잠금을 설정합니다. 잠금 가능할 때까지 대기합니다 (블로킹).
F_OFD_SETLK
Open File Description 잠금 설정 (Linux 3.15+, 스레드 간 안전).
F_SETOWN
SIGIO/SIGURG를 받을 프로세스/그룹을 설정합니다.
F_SETSIG
비동기 I/O 알림에 사용할 시그널 번호를 변경합니다.
F_ADD_SEALS
memfd에 sealing을 추가합니다 (F_SEAL_WRITE 등, 불변성 보장).
디렉터리 & 파일시스템
디렉터리 조작, 링크, 마운트 등 파일시스템 구조를 변경하는 syscall 목록입니다. 경로 기반 syscall보다 *at() 변형(openat, linkat, mkdirat 등)이 TOCTOU 경쟁 조건을 방지하고 O_CLOEXEC를 원자적으로 설정할 수 있어 모던 코드에서 권장됩니다.
set에 포함된 시그널 중 하나가 도달할 때까지 대기합니다. timeout으로 최대 대기 시간 지정.
130
rt_sigsuspend
int rt_sigsuspend(const sigset_t *mask, size_t sigsetsize)
시그널 마스크를 mask로 원자적으로 교체하고 시그널을 기다립니다. EINTR로 반환 후 마스크가 복원됩니다. 경쟁 조건 없는 대기에 사용합니다.
131
sigaltstack
int sigaltstack(const stack_t *ss, stack_t *oss)
시그널 처리용 대체 스택을 설정합니다. 스택 오버플로우(SIGSEGV) 처리에 필수입니다.
234
tgkill
int tgkill(pid_t tgid, pid_t tid, int sig)
멀티스레드 프로세스에서 특정 스레드에 시그널을 전송합니다. kill(tid)와 달리 tid 재사용에 의한 경쟁 없이 안전합니다.
289
signalfd4
int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags)
mask의 시그널을 fd에서 read()로 동기 수신합니다. epoll과 통합하여 이벤트 루프로 처리 가능합니다 (SFD_NONBLOCK, SFD_CLOEXEC).
표준 시그널 참조 (x86_64)
번호
이름
기본 동작
설명 / 주요 발생 원인
1
SIGHUP
종료
제어 터미널 연결 해제, 데몬의 설정 재로드 관례로 사용
2
SIGINT
종료
Ctrl+C — 포그라운드 프로세스 그룹에 전달
3
SIGQUIT
코어덤프+종료
Ctrl+\ — SIGINT와 유사하나 코어 생성
4
SIGILL
코어덤프+종료
잘못된 CPU 명령어 실행
5
SIGTRAP
코어덤프+종료
디버거 breakpoint, ptrace 트랩
6
SIGABRT
코어덤프+종료
abort() 호출, assert() 실패
7
SIGBUS
코어덤프+종료
버스 오류 — 정렬되지 않은 메모리 접근, mmap 영역 접근 오류
8
SIGFPE
코어덤프+종료
부동 소수점/정수 나누기 0, 오버플로우
9
SIGKILL
종료 (강제)
즉시 종료 — 블록/무시 불가. OOM killer가 사용
10
SIGUSR1
종료
사용자 정의 — Nginx worker 재로드, 로그 로테이션 등
11
SIGSEGV
코어덤프+종료
잘못된 메모리 접근 (NULL 역참조, 스택 오버플로우 등)
12
SIGUSR2
종료
사용자 정의 — 애플리케이션별 커스텀 용도
13
SIGPIPE
종료
읽는 쪽이 닫힌 파이프/소켓에 쓰기 — SIG_IGN 처리 관례
14
SIGALRM
종료
alarm() 타이머 만료
15
SIGTERM
종료
정상 종료 요청 — systemd stop, kill 기본값
17
SIGCHLD
무시
자식 프로세스 종료/중지 알림 — waitpid() 연계
18
SIGCONT
계속
SIGSTOP/SIGTSTP로 중지된 프로세스 재개
19
SIGSTOP
중지 (강제)
프로세스 일시 정지 — 블록/무시 불가
20
SIGTSTP
중지
Ctrl+Z — 블록/무시 가능
29
SIGIO
종료
비동기 I/O 완료 알림 (F_SETOWN + O_ASYNC)
30
SIGPWR
종료
전원 이상 알림 (UPS 등)
31
SIGSYS
코어덤프+종료
잘못된 syscall 호출 — seccomp 필터가 활용
34~64
SIGRTMIN~SIGRTMAX
종료
실시간 시그널 — 큐잉 보장, 순서 보장, 추가 데이터 전달 가능
IPC (프로세스 간 통신)
파이프, 공유 메모리, 세마포어, 메시지 큐, 이벤트 fd 등 IPC syscall 목록입니다. Linux에서 IPC 메커니즘은 특성에 따라 선택하고, 현대적 설계에서는 futex(잠금), Unix socket(메시지), memfd+mmap(대용량 공유 메모리)을 조합합니다.
관련 문서:IPC 심화 — pipe/Unix socket, futex, System V IPC |
동기화 기법
번호
이름
시그니처
설명
22
pipe
int pipe(int pipefd[2])
단방향 통신용 파이프를 생성합니다. fd[0]은 읽기 전용, fd[1]은 쓰기 전용이며 최대 64KiB(Linux 3.11+)의 커널 버퍼를 사용합니다.
293
pipe2
int pipe2(int pipefd[2], int flags)
O_CLOEXEC(exec 시 자동 닫기), O_NONBLOCK(비블로킹) 플래그를 원자적으로 지정하여 파이프를 생성합니다. 모던 코드에서 pipe 대신 권장됩니다.
29
shmget
int shmget(key_t key, size_t size, int shmflg)
System V 공유 메모리 세그먼트를 생성하거나 기존 것을 가져옵니다. IPC_CREAT|0666 플래그로 생성하며, 반환된 shmid로 shmat에서 연결합니다.
30
shmat
void *shmat(int shmid, const void *shmaddr, int shmflg)
공유 메모리 세그먼트를 프로세스 주소 공간에 매핑합니다. shmaddr=NULL이면 커널이 적절한 주소를 선택합니다. SHM_RDONLY로 읽기 전용 연결 가능.
67
shmdt
int shmdt(const void *shmaddr)
프로세스 주소 공간에서 공유 메모리 세그먼트의 연결을 해제합니다. 세그먼트 자체는 삭제되지 않습니다.
31
shmctl
int shmctl(int shmid, int cmd, struct shmid_ds *buf)
공유 메모리 세그먼트를 제어합니다. IPC_RMID로 삭제, IPC_STAT으로 상태 조회, IPC_SET으로 권한 변경.
64
semget
int semget(key_t key, int nsems, int semflg)
System V 세마포어 집합을 생성하거나 가져옵니다. nsems개의 세마포어가 하나의 집합을 이룹니다.
65
semop
int semop(int semid, struct sembuf *sops, size_t nsops)
세마포어 집합에 P(sem_op 음수)/V(sem_op 양수) 연산을 수행합니다. SEM_UNDO 플래그로 프로세스 종료 시 자동 롤백됩니다.
64비트 카운터를 fd로 추상화한 이벤트 알림 메커니즘입니다. write(fd, &1, 8)로 신호, read(fd, &v, 8)로 수신합니다. epoll과 조합하여 사용합니다.
202
futex
long futex(uint32_t *uaddr, int futex_op, uint32_t val, ...)
사용자 공간 원자 연산과 커널 대기 큐를 결합한 빠른 잠금 원시 연산입니다. pthread_mutex, pthread_cond, Go runtime의 기반. FUTEX_WAIT/FUTEX_WAKE가 핵심 오퍼레이션입니다.
시간 & 타이머
시간 조회, 설정, 타이머 생성에 사용하는 syscall 목록입니다. clock_gettime과 gettimeofday는 vDSO(virtual Dynamic Shared Object)를 통해 커널 진입 없이 사용자 공간에서 직접 실행되므로 일반 syscall 대비 3~10배 빠릅니다. 고해상도 타이머가 필요할 때는 CLOCK_MONOTONIC을 우선 사용하세요.
int timer_create(clockid_t clkid, struct sigevent *sevp, timer_t *timerid)
POSIX 인터벌 타이머를 생성합니다. 만료 시 시그널 전달(SIGEV_SIGNAL) 또는 스레드 함수 호출(SIGEV_THREAD) 방식 선택 가능.
223
timer_settime
int timer_settime(timer_t timerid, int flags, const struct itimerspec *new_value, struct itimerspec *old_value)
POSIX 타이머의 만료 시각과 인터벌을 설정합니다. it_interval을 0이 아니면 반복 타이머로 동작합니다.
224
timer_gettime
int timer_gettime(timer_t timerid, struct itimerspec *curr_value)
POSIX 타이머의 현재 만료까지 남은 시간과 인터벌을 조회합니다.
283
timerfd_create
int timerfd_create(clockid_t clkid, int flags)
타이머 만료를 fd로 읽을 수 있는 타이머 fd를 생성합니다. epoll/select와 조합하여 이벤트 루프에 타이머를 통합할 때 이상적입니다. TFD_NONBLOCK|TFD_CLOEXEC 권장.
286
timerfd_settime
int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itimerspec *old_value)
timerfd의 만료 시각과 인터벌을 설정합니다. TFD_TIMER_ABSTIME으로 절대 시각 설정도 가능합니다.
287
timerfd_gettime
int timerfd_gettime(int fd, struct itimerspec *curr_value)
timerfd의 현재 설정(남은 시간, 인터벌)을 조회합니다.
159
adjtimex
int adjtimex(struct timex *buf)
NTP 데몬이 사용하는 커널 시계 조정 인터페이스입니다. 주파수 오차, 시간 오프셋, PPS 신호 등을 설정합니다. (CAP_SYS_TIME 필요)
보안 & 권한
UID/GID 변경, capabilities, seccomp, 네임스페이스 분리 등 보안 관련 syscall 목록입니다. Linux 보안은 DAC(소유자/그룹/others 권한), Capabilities(세분화된 권한), LSM(SELinux/AppArmor), seccomp(syscall 필터링), Namespaces(자원 격리)의 다층 구조로 이루어집니다.
새 epoll 인스턴스를 생성합니다. EPOLL_CLOEXEC 플래그를 항상 지정하는 것을 권장합니다. O(1) 이벤트 통지, 백만 이상의 fd를 효율적으로 처리합니다.
233
epoll_ctl
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
epoll 관심 목록에 fd를 추가(EPOLL_CTL_ADD), 수정(EPOLL_CTL_MOD), 삭제(EPOLL_CTL_DEL)합니다. EPOLLET으로 엣지 트리거 모드 설정.
232
epoll_wait
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
준비된 이벤트가 있을 때까지 대기합니다. 반환값은 준비된 fd 수이며, events[]에만 결과가 채워집니다.
206
io_setup
int io_setup(unsigned nr_events, aio_context_t *ctx_idp)
Linux AIO 비동기 I/O 컨텍스트를 생성합니다. O_DIRECT 파일에서만 진정한 비동기가 보장됩니다 (일반 파일은 실제로 블로킹).
209
io_submit
long io_submit(aio_context_t ctx_id, long nr, struct iocb **iocbpp)
Linux AIO 요청을 제출합니다. 실제 커널 비동기 I/O 제출.
208
io_getevents
long io_getevents(aio_context_t ctx_id, long min_nr, long nr, struct io_event *events, struct timespec *timeout)
완료된 AIO 이벤트를 수집합니다. min_nr개 이상 완료될 때까지 대기합니다.
425
io_uring_setup
int io_uring_setup(u32 entries, struct io_uring_params *params)
고성능 비동기 I/O를 위한 io_uring 인스턴스를 설정합니다 (Linux 5.1+). SQ/CQ 링을 mmap으로 매핑하여 syscall 없이 요청/완료 처리가 가능합니다.
426
io_uring_enter
int io_uring_enter(unsigned int fd, u32 to_submit, u32 min_complete, u32 flags, const sigset_t *sig, size_t sigsz)
SQ에 추가된 요청을 커널에 제출하고 완료를 대기합니다. SQPOLL 모드에서는 이 syscall도 불필요합니다.
427
io_uring_register
int io_uring_register(unsigned int fd, unsigned int opcode, void *arg, unsigned int nr_args)
io_uring 인스턴스에 파일/버퍼를 미리 등록하여 매 요청 시 참조 카운팅 오버헤드를 제거합니다 (IORING_REGISTER_BUFFERS, IORING_REGISTER_FILES 등).
기타 시스템 콜
시스템 정보 조회, 리소스 제한, BPF, 커널 모듈 로딩 등 기타 syscall 목록입니다. bpf()와 perf_event_open()은 커널 내부 관찰 및 성능 분석 도구(BCC, bpftrace, perf, 시스템 모니터링)의 기반이며, prlimit64는 데몬/서버 프로세스의 리소스 튜닝에 필수입니다.
RLIMIT 리소스 종류
리소스
값
단위
설명
RLIMIT_CPU
0
초
CPU 시간 제한. 초과 시 SIGXCPU 전달
RLIMIT_FSIZE
1
바이트
파일 크기 최대값. 초과 시 SIGXFSZ
RLIMIT_DATA
2
바이트
데이터 세그먼트(힙+BSS) 크기 한도
RLIMIT_STACK
3
바이트
스택 크기 한도 (기본 8MiB)
RLIMIT_CORE
4
바이트
코어 덤프 파일 크기 한도 (0이면 생성 안함)
RLIMIT_NOFILE
7
개수
열 수 있는 최대 파일 디스크립터 수 (기본 1024)
RLIMIT_AS
9
바이트
가상 주소 공간 최대 크기
RLIMIT_NPROC
6
개수
사용자가 생성할 수 있는 최대 프로세스/스레드 수
RLIMIT_MEMLOCK
8
바이트
메모리에 잠글 수 있는 최대 바이트 수 (mlock)
RLIMIT_LOCKS
10
개수
파일 잠금/lease 최대 수
RLIMIT_SIGPENDING
11
개수
대기 시그널 최대 수
RLIMIT_MSGQUEUE
12
바이트
POSIX 메시지 큐 총 바이트 한도
RLIMIT_NICE
13
우선순위
nice 값의 최대 상향 한도
RLIMIT_RTPRIO
14
우선순위
실시간 스케줄링 최대 우선순위
RLIMIT_RTTIME
15
마이크로초
실시간 프로세스 연속 CPU 시간 한도
eBPF 프로그램 타입 (bpf() 주요 용도)
프로그램 타입
연결점
주요 사용 시나리오
BPF_PROG_TYPE_SOCKET_FILTER
소켓
패킷 필터링, tcpdump 대체
BPF_PROG_TYPE_KPROBE
커널 함수 진입/반환
함수 추적, 인자/반환값 감시
BPF_PROG_TYPE_TRACEPOINT
커널 트레이스포인트
syscall 진입/반환, 스케줄러 이벤트
BPF_PROG_TYPE_XDP
NIC 드라이버 레벨
초고속 패킷 처리, DDoS 완화
BPF_PROG_TYPE_TC
TC (traffic control)
네트워크 QoS, 패킷 리다이렉트
BPF_PROG_TYPE_PERF_EVENT
perf 이벤트
PMU 카운터, CPU 프로파일링
BPF_PROG_TYPE_CGROUP_SKB
cgroup 소켓
컨테이너별 네트워크 정책
BPF_PROG_TYPE_LSM
LSM 훅
커널 보안 정책 (BPF-LSM, Linux 5.7+)
BPF_PROG_TYPE_SK_LOOKUP
소켓 룩업
소켓 선택 정책 커스터마이즈
BPF_PROG_TYPE_SYSCALL
syscall 추적
syscall 인자 검사, seccomp 보완
번호
이름
시그니처
설명
63
uname
int uname(struct utsname *buf)
커널 이름(sysname), 호스트명(nodename), 릴리즈(release), 버전(version), 아키텍처(machine) 정보를 가져옵니다.
99
sysinfo
int sysinfo(struct sysinfo *info)
메모리 총량/여유, 스왑 총량/여유, 1/5/15분 부하 평균, 업타임, 프로세스 수를 한 번에 가져옵니다.
97
getrlimit
int getrlimit(int resource, struct rlimit *rlim)
프로세스의 리소스 소프트/하드 제한값을 조회합니다. prlimit64 사용을 권장합니다.
160
setrlimit
int setrlimit(int resource, const struct rlimit *rlim)
프로세스의 리소스 제한값을 설정합니다. 소프트 한도는 하드 한도 이하, 하드 한도는 CAP_SYS_RESOURCE가 있어야만 상향 가능합니다.
302
prlimit64
int prlimit64(pid_t pid, int resource, const struct rlimit64 *new, struct rlimit64 *old)
64비트 리소스 제한을 조회/설정합니다. pid=0이면 자신에게, 타 PID에는 CAP_SYS_RESOURCE가 필요합니다. 서비스 소켓 수 등 튜닝에 사용합니다.
98
getrusage
int getrusage(int who, struct rusage *usage)
사용자/시스템 CPU 시간, 메이저/마이너 페이지 폴트 수, 최대 RSS, I/O 횟수 등 리소스 사용 통계를 가져옵니다. RUSAGE_SELF/RUSAGE_CHILDREN/RUSAGE_THREAD로 범위 선택.