TTY 포트 공유 - 서로 다른 두 프로세스를 통해 동일한 포트에 동시에 액세스합니다. 포트 공유 - 라즈베리

TTY 포트 공유 - 서로 다른 두 프로세스를 통해 동일한 포트에 동시에 액세스합니다. 포트 공유 - 라즈베리

/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수 있습니다 . fifo2tty가 정말로 필요한 경우 하나를 추가하여 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

관련 정보