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
.