/dev/ttyACM0
동시에 두 가지 다른 프로세스를 통해 포트를 읽어야 합니다. 프로세스가 이 포트에 액세스하는 방법으로 이 포트를 공유하거나 다른 두 포트로 분할할 수 있습니까? 이 같은:
___/dev/ttyPort1
/dev/ttyACM0 --/
\___/dev/ttyPort2
socat을 설치하고 사용해 보았습니다 socat /dev/ttyPort1 /dev/ttyACM0
. 이것은 부분적으로 작동했습니다. socat을 사용하여 새 포트를 ttyACM0의 미러로 가지고 있는데 이 포트를 동시에 읽으려고 연결하면 수신된 정보가 ttyACM0이나 ttyPort1에만 나타나고 둘 다 표시되지 않고 2개가 필요합니다. 동일한 정보가 동시에 처리됩니다.
답변1
프로그램이 tty 대신 fifo에서 읽을 의향이 있고 읽기만 하고 쓰지 않는 경우 tee
두 개의 fifo를 사용할 수 있습니다.
mkfifo fifo1 fifo2
tee </dev/ttyS0 fifo1 >fifo2 &
이제 각각에서 동일한 데이터를 열고 읽을 fifo1
수 있습니다 . fifo2
tty가 정말로 필요한 경우 하나를 추가하여 socat
각 fifo를 읽고 이를 pty에 연결할 수 있습니다.
socat -u GOPEN:fifo1 pty,link=$HOME/ttyPort1,raw,echo=0 &
socat -u GOPEN:fifo2 pty,link=$HOME/ttyPort2,raw,echo=0 &
읽고 .$HOME/ttyPort1
$HOME/ttyPort2