<aside> 💡 특정 명령이나 자원들의 메뉴얼을 출력하는 명령어.
오프라인 환경에서 검색이 불가능한 상황에서 활용하기 좋다.
</aside>
# man page 경로
$ ls /usr/share/man
man1 man2 man3 man4 man5 man6 man7 man8 man9 man3lua mandoc.db
# man 명령어
$ man man
$ man -k 키워드 # 키워드가 포함된 모든 메뉴얼
$ man -f 키워드 # 키워드가 일치하는 메뉴얼 목록
$ man -w 키워드 # 키워드의 '메뉴얼 페이지' 위치 정보
$ man 2 키워드 # 시스템 콜 영역의 메뉴얼 페이지
$ man 3 키워드 # 라이브러리 함수 영역의 메뉴얼 페이지
Section | 주요 내용 | 예시 |
---|---|---|
man1 | General Commands | ls, cp, chmod, ... |
man2 | System Call | open, read, write, ... |
man3 | Library Functions | stdio.h |
man4 | Kernel Interface | 장치, 드라이버, FIFO, socket, |
/dev 내의 형식 관련 규약 등 | ||
man5 | File Format | 파일 포맷 규칙 |
/etc/passwd, /etc/shadow, xinetd.conf 등 | ||
man6 | Games | |
man7 | Miscellaneous Information | 리눅스 시스템 파일 관련 표준, 규칙, 프로토콜, 문자셋, 시그널 목록 등 |
man8 | System Manager | root가 사용하는 시스템 관리 관련 명령어 |
man9 | Kernel Developler | 리눅스 커널 루틴 |
$ ls /usr/include
$ vi /usr/include/stdio.h
# 함수 목록 확인
$ man 3 printf
# 함수 용법 확인
<aside> 💡 시스템 콜(System Call) 이란?
프로세스의 실행, 종료 및 I/O 작업 등 사용자가 함부로 사용하면 문제가 될 명령들을 사용하기 위해서는 OS가 제공하는 함수
</aside>
시스템 콜 세부 동작 원리
System Call | Library Call |
---|---|
커널 모드에서 동작 | |
시스템 메모리 접근 가능 | 사용자 모드에서 동작 |
하드웨어 직접 접근 불가능 | |
모든 CPU 명령 실행 가능 | 사용자 애플리케이션 실행 가능 |
시스템 콜 호출 시 일시적으로 커널 모드 전환 |
Windows | Unix | |
---|---|---|
프로세스 제어 | CreateProcess() | |
WaitForSingleObject() | ||
ExitProcess() | fork() | |
wait() | ||
exit() | ||
파일 관리 | CreateFile() | |
ReadFile() | ||
WriteFile() | ||
CloseHandle() | open() | |
read() | ||
write() | ||
close() | ||
장치 관리 | SetConsoleMode() | |
ReadConsole() | ||
WriteConsole() | ioctl() | |
read() | ||
write() | ||
정보 관리 | GetCurrentProcessID() | |
SetTimer() | ||
Sleep() | getpid() | |
alarm() | ||
sleep() | ||
통신 | CreatePipe() | |
CreateFileMapping() | ||
MapViewOfFile() | pipe() | |
shm_open() | ||
mmap() | ||
보안 | SetFileSecurity() | |
InitlializeSecurityDescriptor() | ||
SetSecurityDescriptorGroup() | chmod() | |
umask() | ||
chown() |