Getting terminal width in C?에서 C 코드를 쉽게 스위프트로 번역되어
는
import Darwin
var w = winsize()
if ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0 {
print("rows:", w.ws_row, "cols", w.ws_col)
}
(어떤 이유로, 이것은 당신이 터미널 창에서 실행 파일을 호출해야, Xcode의 디버거 콘솔에서 을 작동하지 않습니다.)
또는 (Getting terminal width in C?에서) ncurses의 라이브러리를 사용하여 :
import Darwin.ncurses
initscr()
let s = "rows: \(LINES), cols: \(COLS)"
mvaddstr(1, 1, s);
refresh();
getch()
endwin()
창 resiz을 추적하려면 전자 이벤트는 SIGWINCH 신호를 처리 할 수 있고, Trapping signals in a Swift command line application 비교 :
import Darwin
import Dispatch
var w = winsize()
if ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0 {
print("rows:", w.ws_row, "cols", w.ws_col)
}
let sigwinchSrc = DispatchSource.makeSignalSource(signal: SIGWINCH, queue: .main)
sigwinchSrc.setEventHandler {
if ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0 {
print("rows:", w.ws_row, "cols", w.ws_col)
}
}
sigwinchSrc.resume()
dispatchMain()
을 bash 쉘에서'LINES'와'COLUMNS' 환경 변수는 화면 크기를 제공합니다. 하지만 그것들은 Mac의 Swift 명령 행 도구에서'ProcessInfo.processInfo.environment'를 사용하여 나에게 나타나지 않습니다. – rmaddy