일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nonblock
- termios
- IPC
- 프롬프트
- cursor
- canonical
- 가상상속
- 멀티플렉싱
- UNIX
- pipe buffer
- MAN
- kevent
- termcap
- opcode
- 터미널제어
- 가상 상속
- multiplexing
- 클래스 상속
- 터미널 제어
- lseek
- kqueue
- getch
- 어셈블리어
- 명령어
- 서버 프로그래밍
- virtual 상속
- 터미널 커서
- 커서 제어
- Assembly
- 레지스터
- Today
- Total
목록전체 글 (11)
오늘도 밤이야

프롬프트 환경을 만들게 되면 입력 내용을 수정 및 편집하기 위해 커서를 옮겨주어야 한다. 그러나 기본 설정의 터미널에서 커서를 옮기기 위해 방향키(화살표 키)를 누르면 커서는 옮겨지지 않고 다음과 같은 이상한 문자가 입력된다... 방향키로 커서를 제어하기 위해서는 터미널 옵션을 바꾸고, 키보드 입력이 있을 때마다 커서를 한땀한땀 바꿔주어야 한다. 먼저 기본 환경 설정이다. getch()처럼 한 글자씩 입력받기 위한 설정과 같다. [터미널 제어를 통해 한 글자씩 입력 받는 getch() 만들기] hyeonski.tistory.com/5 [C/UNIX] 개행 없이 한 글자씩 입력받는 getch() 만들기 (터미널 제어) 프롬프트 또는 콘솔 환경을 만들기 위해서 키보드 입력을 한 자씩 받아야할 때가 있다. u..

프롬프트 또는 콘솔 환경을 만들기 위해서 키보드 입력을 한 자씩 받아야할 때가 있다. unistd.h의 read함수를 STDIN에서 1바이트만큼 받으면 되지 않을까? 해서 다음과 같은 코드를 실행해보았다. #include #include int main(void) { char c; while (read(0, &c, sizeof(c)) > 0) { printf("input: %c\n", c); } } read는 분명 1byte씩 잘 읽고 있다. 그렇다면 왜 return이 입력되기 전에는 계속 입력만 받고 있을까? 이는 터미널의 canonical input 설정 때문이다. 한 line(line의 기준은 '\n'이다) 단위로 읽기 때문에 read()가 몇 byte로 읽든 newline이 입력되기 전까지 실시간..