Golang

    golang으로 signal 처리하기

    golang으로 console app을 개발하다 보면 signal에 대한 처리가 필요한 경우가 있다. 예를 들어 동작 중인 console app을 CTRL+C 를 강제 종료하는 경우이다. 이런 경우에 interrupt를 발생시켜 종료하는 인데, interrupt에 대한 signal를 처리하여 app에서 필요한 처리를 마치고 종료할 수가 있다. 다음 예제는 모든 signal을 수신하는 코드이다. code를 실행한 상태에서 CTRL+C를 이용하여 강제 종료를 시키면, 아래와 같이 console에 signal 로그가 출력된다. Got signal: interrupt 하지만, kill PID, kill -SIGABRT PID를 이용하여 강제 종료를 하면, 해당 signal를 처리하지 못한다. 이런 부분을 처리하..

    golang으로 Windows Registry에 등록된 NetCfgInstanceId를 얻는 방법

    Windows Registry에 등록된 NetCfgInstanceId를 획득하는 방법을 구현해 본다. Windows는 Registry에 디바이스 정보를 등록할 때, 미리 정해진 GUID 값에 맞게 등록이 된다. CDROM: 4D36E965-E325–11CE-BFC1–08002BE10318 Keyboard: 4D36E96B-E325–11CE-BFC1–08002BE10318 Modem: 4D36E96D-E325–11CE-BFC1–08002BE10318 Mouse: 4D36E96F-E325–11CE-BFC1–08002BE10318 Net: 4D36E972-E325–11CE-BFC1–08002BE10318 이 중에서 Net 클래스의 GUID 값을 Key로 사용한다. SYSTEM\CurrentControlSet\..

    golang으로 console 환경에서 UI 처리하기

    golang으로 console 환경에서 UI 처리하기

    console 환경에서 GUI 처럼 구성하는 것을 TUI라고 한다. 아래의 예제처럼 console 환경에서도 다양한 처리가 가능한다. golang으로 단순한 console을 넘어서는 application을 위해서는 이런 TUI 가 필요한데, 많이 사용되는 라이브러리로 termbox(https://github.com/nsf/termbox-go)가 있다.