일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vtable
- .nret core 배포
- epoll_wait
- wrefresh
- 취약점
- REDIS
- packet flow
- BOF
- C언어
- packet filter
- LOB
- edge trigger
- DOCKER-USER
- iptables
- NAPT
- .net core 7
- ioctl
- mvwin
- Compiler
- 풀이
- Docker
- ncurses
- architecture
- cbpf
- epoll
- doupdate
- 어셈블리어
- level trigger
- rfc5508
- wnourefresh
- Today
- Total
목록ncurses (2)
Tuuna Computer Science
ncurses를 사용하다보면 창을 수정하고 실제 터미널로 출력하기를 원할 때 refresh(), wrefresh(WINDOW* win)을 사용하는 경우가 많다. 그렇다면 새로고침할 때 사용하는 wrefresh()함수는 내부적으로 어떻게 이루어져 있을까 코드를 보면 wrefresh()함수는 내부적으로 wnourefresh()함수를 호출하고 doupdate()함수를 호출한다. wnourefresh()함수는 수정한 내용을 가상터미널로 출력하는 역할을 지닌 함수이고 doupdate()함수는 가상터미널에 있는 출력문을 실제 터미널로 비교 출력하는 역할을 지닌다. 즉, wrefresh()함수는 wnourefresh()->doupdate()함수의 반복적 사용이라고 볼 수 있다. 하지만 터미널 사이의 출력은 꽤나 큰 ..
Ncurses 내에서 윈도우를 옮겨야 할때 mvwin()이라는 함수가 존재한다. 일반적인 window를 mvwin()하면 해당 윈도우의 _begy와 _begx에 인자로 주어진 by와 bx를 대입하고 touchwin()으로 윈도우 자체를 새로 그린다음 wrefresh()를 호출하면 된다. 하지만 subwindow의 경우 말이 많이 달라진다. 코드로 살펴보자 위는 ncurses내의 mvwin()을 하는 코드이다. mvwin()함수 내부를 보면 해당 인자로 주어진 win이 subwin 플래그가 있는지 확인한다. 없을 시 바로 위에서 언급한대로 옮기기를 시도한다. 하지만 _SUBWIN 플래그가 존재할 시 특별한 루틴을 타는데 바로 dupwin()함수를 통해 기존의 win을 복제한 다음 기존의 win의 내용을 지..