Se os seus programas estão dispostos a ler de um fifo ao invés de um tty, e você está apenas lendo e não escrevendo, então você pode usar tee e dois fifos:
mkfifo fifo1 fifo2
tee </dev/ttyS0 fifo1 >fifo2 &
Agora você pode abrir fifo1 e fifo2 e ler os mesmos dados de cada um.
Se você realmente precisa de um tty, então você pode adicionar um socat para ler cada fifo e conectá-lo a um arquivo:
socat -u GOPEN:fifo1 pty,link=$HOME/ttyPort1,raw,echo=0 &
socat -u GOPEN:fifo2 pty,link=$HOME/ttyPort2,raw,echo=0 &
Leia $HOME/ttyPort1 e $HOME/ttyPort2 .