링크 ux man 매 뉴 얼 각 장의 의미 와 용법.

4124 단어 man매 뉴 얼
다음으로 전송:http://samuschen.iteye.com/blog/700944
Linux 의 man 은 매우 강력 합 니 다. 이 매 뉴 얼 은 여러 섹 션 으로 나 뉘 어 있 습 니 다. man 을 사용 할 때 서로 다른 섹 션 을 지정 하여 탐색 할 수 있 습 니 다. 각 섹 션 의 미 는 다음 과 같 습 니 다. 1 - commands 2 - system calls 3 - library calls 4 - special files 5 - file formats and convertions 6 - games for linux 7 - macro packages and conventions 8 - system management commands 9 - 기타 설명,1 은 일반적인 명령 2 는 시스템 호출 입 니 다. 예 를 들 어 open, write 와 같은 (이 를 통 해 적어도 이 함 수 를 호출 할 수 있 습 니 다. 어떤 헤더 파일 을 추가 해 야 합 니까?) 3 은 라 이브 러 리 함수 입 니 다. 예 를 들 어 printf, fread 4 는 특수 파일 입 니 다. 즉 / dev 의 각종 장치 파일 5 는 파일 의 형식 을 말 합 니 다. 예 를 들 어 passwd 는 이 파일 의 각 필드 의 의미 6 이 게임 에 남 겨 진 것 임 을 설명 합 니 다.각 게임 에서 스스로 7 을 첨부 파일 로 정의 하 는 변수 도 있 습 니 다. 예 를 들 어 environ 과 같은 전역 변 수 는 여기 서 8 이 시스템 관리 용 명령 이라는 것 을 설명 합 니 다. 이 명령 들 은 루트 에서 만 사용 할 수 있 습 니 다. 예 를 들 어 ifconfig 가 지정 하려 면 section 은 man 의 뒤에 숫자 를 직접 추가 합 니 다. 예 를 들 어 man 1 ls man 3 printf 등 은 open, kill 과 같은 명령 도 있 고 시스템 호출 도 있 습 니 다.man open 은 open (1) 을 표시 합 니 다. 즉, 맨 앞 에 있 는 section 부터 시작 합 니 다. open 시스템 호출 을 보 려 면 man 2 open 에서 라 이브 러 리 함수 와 시스템 호출 을 해 야 합 니 다.
라 이브 러 리 함 수 는 고 층 으로 사용자 공간 에서 완전히 실행 되 며 프로그래머 에 게 실제 사 무 를 수행 하 는 시스템 호출 을 위 한 보다 편리 한 인 터 페 이 스 를 제공 합 니 다.시스템 호출 은 커 널 상태 에서 실행 되 고 커 널 자체 가 제공 합 니 다.표준 C 라 이브 러 리 함수 printf() 은 일반적인 출력 문 으로 볼 수 있 으 나 실제 적 으로 데 이 터 를 형식 에 맞 는 문자열 로 바 꾸 고 시스템 호출 write() 으로 출력 합 니 다.printf() 이 도대체 어떤 시스템 호출 을 사 용 했 는 지 보고 싶 습 니까?이것 은 매우 쉬 워 서 아래 의 코드 를 컴 파일 한다.
 
#i nclude <stdio.h>
int main(void)
{ printf("hello"); return 0; }

명령 gcc - wal - o hello hello. c 를 사용 하여 컴 파일 합 니 다.실행 가능 한 파일 을 명령 strace hello 로 추적 합 니 다.놀 라 셨 죠?모든 줄 은 하나의 시스템 호출 과 대응 된다.strace 는 매우 유용 한 프로그램 입 니 다. 프로그램 이 어떤 시스템 호출 과 이 시스템 호출 인 자 를 사 용 했 는 지 알려 주 고 값 을 되 돌려 줍 니 다.이것 은 프로그램 이 무엇 을 하고 있 는 지 보 는 매우 가치 있 는 도구 이다.출력 말미 에 이런 유사 한 줄 write(1, "hello", 5hello) 을 보 셔 야 합 니 다.이것 이 바로 우리 가 찾 는 것 이다.가면 printf() 에 숨겨 진 정체.절대 다수의 사람들 이 라 이브 러 리 함 수 를 사용 하여 파일 I / O 를 조작 하 는 이상 (fopen, fputs, fclose).man 이 설명 하 는 두 번 째 부분 에서 명령 man 2 write 를 사용 할 수 있 습 니 다.man 이 설명 한 두 번 째 부분 은 시스템 호출 (예 를 들 어 kill()read()) 을 전문 적 으로 소개 합 니 다.man 이 설명 한 세 번 째 부분 은 당신 이 더 잘 알 수 있 는 라 이브 러 리 함수 (예 를 들 어 cosh()random()) 를 전문 적 으로 소개 합 니 다.
우리 가 곧 할 것 처럼 코드 를 만들어 서 시스템 호출 을 덮어 쓸 수도 있다.해 킹 은 항상 이렇게 해서 시스템 에 뒷문 이나 목 마 를 설치한다.그러나 커 널 이 누군가가 파일 을 삭제 할 때마다 'Tee hee, that tickles!' 라 는 메 시 지 를 출력 하 는 것 처럼 더 유익 한 일 을 할 수 있 습 니 다.
 
 
자신의 총 결:
프로그램 이 완 성 된 기능 을 보면 함수 라 이브 러 리 가 제공 하 는 함 수 는 운영 체제 의 서비스 가 필요 하지 않 고 함 수 는 사용자 공간 에서 실 행 됩 니 다. 함수 가 I / O 작업 등 과 관련 되 지 않 는 한 핵심 상태 로 자 르 지 않 습 니 다.시스템 호출 은 운영 체제 가 사용자 에 게 프로 세 스 를 제공 하고 특정한 서 비 스 를 제공 하도록 요구 하 는 것 으로 시스템 의 하드웨어 자원 과 민감 한 소프트웨어 자원 등 과 관련된다.    함수 라 이브 러 리 의 함수, 특히 입 출력 과 관련 된 함 수 는 대부분 Linux 시스템 호출 을 통 해 이 루어 져 야 합 니 다.따라서 우 리 는 함수 라 이브 러 리 의 함 수 를 응용 프로그램 설계 자 와 시스템 호출 프로그램 간 의 중간 층 으로 볼 수 있 습 니 다. 이 중간 층 을 통 해 우 리 는 일치 하 는 인터페이스 로 시스템 호출 을 안전하게 할 수 있 습 니 다.이렇게 하면 프로그래머 는 코드 를 한 번 만 쓰 면 서로 다른 버 전의 Liux 시스템 에서 축적 종 류 를 사용 하여 완전히 다른 시스템 호출 을 실현 할 수 있다.서로 다른 시스템 호출 에 대한 호환성 을 어떻게 실현 하 는 지 에 대해 서 는 함수 라 이브 러 리 개발 자 들 이 관심 을 가 지 는 문제 입 니 다.    프로그램 실행 효율 을 보면 시스템 호출 의 실행 효율 은 대부분 함수 보다 높 고 특히 입 출력 을 처리 하 는 함수 이다.처리 할 데이터 의 양 이 시간 에 비해 함수 라 이브 러 리 의 함수 집행 효율 이 비교적 좋 을 수 있 습 니 다. 함수 라 이브 러 리 의 방법 은 처리 할 데 이 터 를 먼저 버퍼 에 저장 하고 버퍼 가 가득 차 면 데 이 터 를 한 번 에 기록 하거나 읽 는 것 이기 때 문 입 니 다.이런 방식 은 소량의 데 이 터 를 처리 할 때 효율 이 비교적 높 지만 시스템 호출 을 할 때 사용자 프로 세 스 가 사용자 모드 에서 시스템 핵심 모드 로 들 어가 기 때문에 중간 에 많은 추가 작업 의 전환 작업 과 관련된다. 이런 조작 을 상하 문 전환 이 라 고 하 는데 이런 추가 작업 은 시스템 의 집행 효율 에 영향 을 줄 수 있다.그러나 처리 해 야 할 데이터 양 이 비교적 많 을 때, 예 를 들 어 입력 과 출력의 데이터 양 이 파일 시스템 이 정의 한 한 도 를 초과 할 때 시스템 호출 을 이용 하면 비교적 높 은 효율 을 얻 을 수 있다.     프로그램의 이식 성 측면 에서 볼 때 시스템 호출 에 비해 C 언어의 표준 준비 함수 라 이브 러 리 (ANSI C) 는 비교적 높 은 이식 성 을 가지 고 있 으 며, 서로 다른 시스템 환경 에서 아주 적은 수정 만 하면 통상 적 으로 수정 할 필요 가 없다.

좋은 웹페이지 즐겨찾기