특정 명령이나 자원들의 메뉴얼을 출력하는 명령어.
오프라인 환경에서 검색이 불가능한 상황에서 활용하기 좋다.
# 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 키워드 # 라이브러리 함수 영역의 메뉴얼 페이지
Shell
복사
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
# 함수 용법 확인
Shell
복사
System Call(2) vs Library Call(3)
시스템 콜(System Call) 이란?
프로세스의 실행, 종료 및 I/O 작업 등 사용자가 함부로 사용하면 문제가 될 명령들을 사용하기 위해서는 OS가 제공하는 함수
시스템 콜 세부 동작 원리
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() |