터미널 io (1)

5180 단어
2016-02-25
단말 io
단말기 io 두 가지 서로 다른 작업 방식: 규범 적 인 방식 으로 입력 처리 하고 행위 단위 로 처리한다.비 규범 적 으로 처리 되 며, 입력 문 자 는 행위 단위 로 처리 되 지 않 습 니 다.기본적으로 셸 의 표준 입 출력 은 터미널 입 니 다. read 와 write 로 표준 입력 을 표준 출력 으로 복사 할 때 터미널 은 규범 적 인 방식 으로 작업 을 하고 매번 read 는 최대 한 줄 로 돌아 갑 니 다.Vi 편집기 와 같은 전체 화면 을 처리 하 는 프로그램 은 비 규범 적 인 방식 을 사용 합 니 다.또한 이 편집 프로그램 은 편집 명령 으로 몇 개의 특수 문 자 를 사 용 했 기 때문에 시스템 이 특수 문 자 를 처리 하 는 것 을 원 하지 않 습 니 다. 예 를 들 어 Ctrl - D 는 보통 터미널 파일 끝 문자 이지 만 Vi 에 서 는 화면 반 을 아래로 스크롤 하 는 명령 입 니 다.터미널 장 치 는 일반적으로 커 널 에 있 는 터미널 드라이버 가 제어 하 는 모든 터미널 장치 에 입력 대기 열 이 있 고 출력 대기 열 이 있 습 니 다.
  • 돌려 보 낼 필요 가 있 으 면 입력 대기 열과 출력 대기 열 사이 에 은밀 한 연결 이 있 습 니 다.
  • 대기 열의 긴 행렬 MAX 입력INPUT 는 특정 장치 의 입력 대기 열 이 채 워 졌 을 때 시스템 이 어떤 처 리 를 하 는 지 에 의존 하 는 제한 값 이 있 습 니 다.이 경우 대부분의 유 닉 스 시스템 에서 벨 문 자 를 되 돌려 줍 니 다.
  • 하나의 규범 서 입 행 중 가장 큰 바이트 수 는 MAXCANON
  • 입력 대기 열 도 보통 유선 길이 이지 만 프로그램 은 그 길 이 를 정의 하 는 상수 에 액세스 할 수 없습니다.입력 대기 열 이 가득 찼 을 때 커 널 은 쓰기 프로 세 스 가 대기 열 에 사용 가능 한 공간 이 있다 는 것 을 알 기 때문에 프로그램 은 이 대기 열의 길이 에 관심 을 가 질 필요 가 없습니다.
  • tcflush 함 수 를 사용 하여 입력 이나 출력 대기 열 을 닦 는 방법 을 설명 할 것 입 니 다.이와 유사 하 게 tcsetattr 함 수 를 설명 할 때 시스템 이 입력 대기 열 이 비어 있 을 때 터미널 의 속성 을 바 꾸 는 방법 을 알 수 있 습 니 다.터미널 속성 을 바 꾸 고 있 을 때 입력 대기 열 에 있 는 모든 것 을 버 리 는 것 도 알려 줄 수 있 습 니 다.

  • 대부분의 유 닉 스 시스템 은 터미널 행 규정 이 라 고 불 리 는 모듈 에서 규범화 처 리 를 한다.이것 은 커 널 클래스 의 읽 기와 쓰기 함수 와 실제 장치 드라이버 사이 에 있 는 모듈 입 니 다.우리 가 검사 하고 변경 할 수 있 는 모든 터미널 장치 특성 은 termios 구조 에 포함 되 어 있 습 니 다.
    struct termios {
        tcflag_t c_iflag;
        tcflag_t c_oflag;
        tcflag_t c_cflag;
        tcflag_t c_lflag;
        cc_t c_cc[NCCS];
    }
    

    대충 말 하면 입력 표 지 는 단말기 드라이버 로 입력 특성 을 제어 하고 출력 표 지 는 출력 특성 을 제어 하 며 제어 표 지 는 RS - 232 직렬 선 에 영향 을 주 고 로 컬 표 지 는 드라이버 와 사용자 간 의 인터페이스 에 영향 을 미친다.유형 tcflagt 의 길 이 는 모든 표지 값 을 유지 하 는 것 입 니 다.그것 은 항상 unsigned long 으로 정의 된다.c_cc 배열 은 변경 할 수 있 는 모든 특수 문 자 를 포함 하고 있 습 니 다.NCCS 는 이 배열 의 길이 로 전형 적 인 값 은 11 ~ 18 사이 이다.cc_t 형식의 길 이 는 모든 전용 문 자 를 유지 할 수 있 습 니 다. 전형 적 인 것 은 unsigned char 입 니 다.
    특수 입력 문자
    POSIX 는 입력 할 때 특수 처 리 된 11 개의 문 자 를 POSIX 의 11 개의 특수 문자 중 9 개 를 거의 모든 값 으로 변경 할 수 있 도록 정의 했다.변경 할 수 없 는 두 개의 특수 문 자 는 새 줄 이 리 턴 문자 에 부합 되 며, 일부 실시 에 서 는 stop 과 start 문 자 를 변경 할 수 없습니다.수정 을 위해 termiso 구조 중 c 만 변경 하면cc 배열 의 대응 항목.이 배열 의 요 소 는 모두 이름 을 다음 표 로 참조 합 니 다.POSIX 에서 이 문자 들 을 선택 적 으로 사용 하지 못 하 게 할 수 있 습 니 다.약POSIX_VDISABLE 가 유효 하면POSIX_VDISABLE 의 값 은 c 에 저장 할 수 있 습 니 다.cc 배열 의 해당 항목 에서 이 특수 문 자 를 진법 으로 사용 합 니 다.pathconf 와 fpathconf 함수 로 이 특징 을 조회 할 수 있 습 니 다.
    isatty 는 입 출력 이 터미널 장치 인지 확인 하 는 데 사용 할 수 있 습 니 다.보통 tcgetattr 는 커 널 에서 termios 구 조 를 액세스 합 니 다.tcsetattr 설정 속성 을 호출 합 니 다.
  • CR POSIX 의 리 턴 부호.회 결 제 를 변경 할 수 없습니다.규범 화 된 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.ICANON 과 ICRNL (CR 을 NL 로 매 핑) 을 설정 하고 IGNCR (CR 무시) 를 설정 하지 않 았 을 때 CR 을 NL 로 변환 하고 NL 문자 와 같은 역할 을 합 니 다.
  • DISCARD 는 복 을 삭제 하고 확장 방식 (IEXTEN) 에서 입력 에서 이 문 자 를 식별 합 니 다.다른 삭제 복 을 입력 하기 전이 나 삭제 조건 이 삭제 되 기 전에 이 문 자 는 후속 출력 을 삭제 합 니 다.처리 후 문자 지불 이 삭 제 됩 니 다. 읽 기 프로 세 스에 보 내지 않 습 니 다.
  • DSUSP 지연 - 작업 제어 문자 걸 기.확장 방식 에서 작업 제어 가 걸 리 고 ISIG 로고 가 설정 되면 입력 에서 이 문 자 를 식별 합 니 다.SUSP 문자 와 같은 것 은 지연 - 문 자 를 걸 면 SIGTSTP 신호 가 발생 합 니 다. 프론트 프로 세 스 그룹의 모든 프로 세 스 로 보 내 집 니 다.그러나 이 문 자 를 입력 할 때 가 아니 라 프로 세 스 가 제어 단말 기 를 읽 을 때 이 지연 은 문 자 를 걸 어서 프로 세 스 그룹 에 보 냅 니 다.처리 후 문자 가 삭 제 됩 니 다.
  • EOF 파일 마침표.규범 적 인 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.이 문 자 를 입력 하면 막 힌 모든 바이트 가 읽 기 프로 세 스에 즉시 전 송 됩 니 다.바이트 대기 도가 없 으 면 0 으로 돌아 갑 니 다. 줄 의 맨 위 에 EOF 를 입력 하 는 것 은 프로그램 에 파일 이 끝 나 는 것 을 지시 하 는 정상 적 인 방식 입 니 다.처리 후 이 문 자 는 삭 제 됩 니 다.
  • EOL 에 추 가 된 행 정의 부 호 는 NL 역할 과 같다.
  • EOL 2 부가 행 정의 부호
  • ERASE 퇴 격.규범 적 인 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.줄 의 이전 문 자 를 지 웁 니 다. 하지만 줄 의 첫 번 째 문 자 를 넘 어 이전 줄 의 문 자 를 지 웁 니 다.
  • INTR 이 ISIG 표 지 를 설정 하면 입력 에서 이 문 자 를 식별 합 니 다.이 신 호 는 프론트 프로 세 스 그룹의 모든 프로 세 스 로 보 내 지 는 SIGINT 신 호 를 만 듭 니 다.
  • KILL 이 문 자 를 죽 였 습 니 다.규범 적 인 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.그것 은 한 줄 전 체 를 지 웠 다.
  • LNEXT 글자 의 다음 글자 입 니 다.규범 적 인 방식 으로 입력 할 때 이 문 자 를 식별 하면 다음 문자 의 모든 특수 한 의 미 를 무시 합 니 다.
  • NL 도 행 정의 부 라 고 불 린 다.이 문 자 를 변경 할 수 없습니다.규범 적 인 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.
  • QUIT 종료 문자.ISIG 플래그 가 설정 되 어 있 으 면 입력 에서 이 문 자 를 인식 합 니 다.SIGQUIT 신 호 를 만 들 고 이 신 호 는 프론트 데스크 톱 프로 세 스 그룹의 모든 프로 세 스 로 보 내 집 니 다.
  • REPRINT 재 인쇄 문자.입력 할 때 이 문 자 를 식별 합 니 다.읽 지 않 은 모든 입력 을 출력 합 니 다 (다시 보 내기)
  • START 시작 문자.IXON 플래그 가 설정 되 어 있 으 면 입력 에서 이 문 자 를 인식 하고 출력 으로 자동 으로 이 문 자 를 생 성 합 니 다.
  • STATUS 상태 - 요구 문자.확장, 규범 화 된 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.SIGINFO 신 호 를 만 들 고 이 신 호 는 프론트 프로 세 스 그룹의 모든 프로 세 스 로 보 내 집 니 다.
  • STOP 정지 문자.IXON 을 설정 하면 입력 에서 이 문 자 를 인식 합 니 다.IXOFF 표지 가 설정 되 어 있 으 면 출력 으로 이 문 자 를 자동 으로 생 성 합 니 다.읽 기 프로 세 스 로 보 내지 않 습 니 다.START 결 제 를 입력 한 후 멈 춘 출력 을 다시 시작 합 니 다.
  • SUSP 에서 작업 제어 문 자 를 걸 었 습 니 다.작업 제어 가 지원 되 고 ISIG 표지 가 설정 되 어 있 으 면 입력 에서 이 문 자 를 식별 합 니 다.SIGTSTP 신 호 를 만 들 고 이 신 호 는 프론트 프로 세 스 그룹의 모든 프로 세 스 로 보 내 집 니 다.
  • WERAE 는 확장, 규범 화 된 방식 으로 입력 할 때 이 문 자 를 식별 합 니 다.그것 은 이전 글 자 를 지 웠 다.우선, 임의의 공백 문 자 를 뒤로 건 너 뜁 니 다.그리고 앞 에 있 는 몇 번 을 뒤로 넘 어가 서 커서 를 앞 에 있 는 첫 번 째 문자 위치 에 놓 습 니 다.보통 이전 기 호 는 공백 문 자 를 만 났 을 때 종 료 됩 니 다.하지만 이 점 을 바 꾸 기 위해 ALTWERASE 표 지 를 설정 할 수 있다.
  • 좋은 웹페이지 즐겨찾기