강좌 & 팁
글 수 2,412
2012.12.14 15:41:19 (*.52.177.29)
56127
임베디드 보드에서 랜 케이블을 빼 내면 터미널에
]$ eth0 Link down
이라는 문자열이 출력됩니다. 반대로 케이블을 연결하면
]$ eth0: link up, 100Mbps, Full-duplex
이와 같은 문자열을 프그램에서 읽으려면 어떻게 해야 할까요?
랜케이블 분리나 연결을 확인할 수 있을 것 같아서 편할 것 같은데.
가능합니다. /proc/kmsg를 읽으시면 됩니다. /proc에 있는 kmsg는 가상 파일로
실제로 파일 시스템에 생성되는 파일이 아닙니다. /proc부터 파일 시스템에 연결된
디렉토리가 아니죠. 시스템의 가상 디렉토리입니다.
파일 읽는 방법은 read() 함수로 읽기를 시도합니다.
만일 시스템에 의한 어떠한 메시지가 없다면 read() 함수가
새로운 메시지가 발생할 때까지 대기합니다.
이때 랜 케이블을 빼면, 그리고 커널 메시지로 eth0 Link down 메시지가 출력하게 되면
read() 함수가 그 문자열을 읽어 반환하게 됩니다.
read() 함수 호출에서 멈추는 것이 싫다면 open()에서 O_NONBLOCK 옵션을 추가하면 됩니다. ^^