모든 타겟 프로세스 kill하기 (bash 쉘 스크립트)
실행 중인 특정 이름의 프로세스를 찾아 모두 종료될 때까지 반복해서 kill 신호를 보내는 bash 쉘 스크립트를 작성하고 각 부분을 설명한다.
실행 중인 특정 이름의 프로세스를 찾아 모두 종료될 때까지 반복해서 kill 신호를 보내는 bash 쉘 스크립트를 작성하고 각 부분을 설명한다.
ifconfig와 grep, gawk로 이더넷 인터페이스의 IP를 확인하고 목표 IP와 다르면 재설정 스크립트를 실행하는 bash 스크립트를 분석한다.
CUDA, GPU, Parallel, NVIDIA, GPGPU, C++, Optimization, Threads, Memory, Architecture
검사 결과를 JSON으로도 남기려고 RapidJSON을 붙였다. AddMember가 문자열을 복사하지 않는다는 것, 파싱 실패를 검사하지 않으면 Release에서 조용히 망가진다는 것, CT2CA로 변환한 한글이 UTF-8이 아니라는 것을 뒤늦게 알았다.
검사 결과를 ID 키로 갱신하는 CSV 누적 파일을 만들었다. vector 순회에서 map으로 바꾼 이유, 필드 조각마다 이스케이프를 걸면 안 되는 이유, Excel이 값을 멋대로 바꿔놓는 문제까지 정리했다.
검사 프로그램에서 보드의 버전을 읽으려고 libssh2로 원격 명령을 실행했다. 실패 경로에서 자원이 전부 새던 문제, stderr와 종료 코드를 안 봐서 실패를 놓치던 문제, 읽기 에러 시 무한 루프를 정리했다.
특정 디렉토리에 파일이 올라오면 자동으로 처리하도록 inotify를 붙였다. IN_CREATE로는 다 써지지 않은 파일을 잡는다는 것, scp로 올리면 이벤트 종류가 달라진다는 것, 큐가 넘치면 조용히 놓친다는 것을 겪고 나서 정리했다.
로그 폴더가 없으면 ofstream이 조용히 실패해서 만든 함수. stat으로 먼저 확인하는 게 왜 불필요한지, mkdir(0777)이 왜 0755가 되는지, 상대 경로가 왜 자동 실행에서 어긋나는지 정리했다.
재미로 써보는 단편 소설 1
보드의 설정 XML을 PC 프로그램이 읽어야 해서 SFTP를 붙였다. 30일 뒤 갑자기 멈춘 상용 라이브러리, libssh2로 옮기며 놓친 소켓 정리와 호스트 키 검증, pugixml의 실패 검사가 항상 통과하던 문제를 정리했다.