<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 
		# 함수 용법 확인 

System Call(2) vs Library Call(3)


<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()

참고


kernel of linux - system call(1)