struct winsize 是终端屏幕的抽象.
TIOCGWINSZ
是一种request 向设备进行请求的类型.
T
表示Terminal
IOC
表示ioctl
G
表示Get
最终内核会将设备的size给到传递size
static inline std::pair<size_t, size_t> terminal_size() {
struct winsize size;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &size);
return {static_cast<size_t>(size.ws_row), static_cast<size_t>(size.ws_col)};
}
static inline size_t terminal_width() {
return terminal_size().second;
}