파일 IO를 파일에서 기존 장치로 매핑하는 방법은 무엇입니까?

파일 IO를 파일에서 기존 장치로 매핑하는 방법은 무엇입니까?

제목에서 알 수 있듯이 II는 파일 IO를 파일에서 기존 장치로 어떻게 매핑합니까?

저는 Linux를 실행하는 일반적인 SoC 단일 보드 컴퓨터 중 하나에서 고급 프로그래밍 언어를 사용하고 있습니다. 언어에는 직렬 포트에 액세스하여 TX를 보내고 RX 데이터를 수신하는 라이브러리가 있습니다. 라이브러리는 읽기 및 쓰기를 위해 /dev/ttyAMA0에 액세스하지만 불행하게도 Serial 개체를 생성할 때 독점 액세스로 /dev/ttyAMA0을 열어서 다른 프로세스가 Serial 개체에 대한 액세스조차 거부하도록 합니다. 예제에서는 /dev/를 사용합니다. ttyAMA0.

내 경우에는 두 개의 별도 프로그램을 작성하고 싶습니다. 한 프로그램은 직렬 포트 TX에 쓰고 다른 프로그램은 직렬 포트 RX에서 읽습니다. 그러나 라이브러리는 독점 액세스로 /dev/ttyAMA0을 열기 때문에 이를 허용하지 않습니다. 내 생각에 Linux를 사용하면 의사 터미널 같은 역할을 하고 읽기나 쓰기 작업을 수행하고 모든 IO 액세스를 /dev/ttyAMA0에 매핑하는 두 번째 또는 세 번째 파일을 만드는 것이 가능해야 한다고 생각합니다.

그래서 제 질문은 모든 읽기 및 쓰기를 /dev/ttyAMA0과 같은 장치에 매핑하는 파일(또는 pseudo-tty)을 Linux에서 어떻게 생성합니까?입니다.

답변1

장치 노드를 가정하면 /dev/ttyAMA0동일한 장치에 매핑될 동일한 주/부 번호를 가진 다른 노드를 생성할 수 있습니다.

예를 들어, 이 작업을 수행하려면 /dev/zero메이저 번호와 마이너 번호를 찾으세요.

carbon# ls -l /dev/zero 
crw-rw-rw- 1 root root 1, 5 May 29 02:16 /dev/zero

메이저 장치 번호는 1, 마이너 장치 번호는 5, 장치는 문자 1입니다.

동일한 매개변수(예: 루트)를 사용하여 다른 장치 노드를 만듭니다.

mknod /dev/zero-dup c 1 5

이제 /dev/zero-dup로 사용할 수 있습니다 /dev/zero.

관련 정보