저는 Linux 시스템(ARM 기반, Yocto, 커널 4.10으로 구축)을 가지고 있고 USB 인터페이스를 사용하여 모뎀에 연결했습니다. 모뎀은 GPIO 라인을 사용하여 전원을 켜거나 끌 수 있습니다.
모뎀 전원이 켜지면 CDC 장치 파일이 표시됩니다. 문제없이 모뎀과 통신이 가능합니다.
가끔 모뎀을 리셋해야 해서 장치 파일과의 통신을 모두 끄고 GPIO를 이용해 전원을 껐다가 몇 초 후에 다시 전원을 켰습니다.
문제는 장치 파일이 생성되었지만 파일 이름이 새로운 것입니다. 대신 /dev/ttyACM5를 가정하면 /dev/ttyACM6이 표시됩니다.
시스템에서 새 파일 이름을 얻을 수 있지만 리소스 누출이 걱정됩니다.
처음에는 내 프로그램에 버그가 있다고 의심했지만 몇 시간 동안 테스트한 후에는 내 프로그램에 아무런 문제가 없다는 확신을 갖게 되었습니다.
다음은 도움이 될 수 있는 몇 가지 사실입니다.
CDC 장치와 통신하는 프로그램이 실행 중이면 파일 이름이 잠깁니다. 프로그램이 종료된 후 - 장치 파일 이름이 해제됩니다.
내 프로그램이 열렸지만 CDC 장치와 통신하지 않으면 파일 이름이 잠기지 않습니다. (/dev/ttyACM5 장치 파일은 모뎀 전원이 꺼진 후에 표시됩니다.)
내 프로그램이 열리고 CDC 장치와 통신할 때 - 정전 후 dmesg는 "cdc_acm 1-3:1.10: Unable to set dtr/rts" 메시지를 표시하고 내 프로그램이 종료될 때까지 파일 이름이 잠겨 있습니다.
어떤 제안이 있으십니까?