Você (via cat
) está tentando abrir e ler um soquete de domínio UNIX e não é assim que eles são acessados corretamente. Soquetes são usados por processos cliente / servidor para trocar dados. Eles devem ser acessados com chamadas de sistema diferentes de open (); você só tem uma falha com errno == ENXIO "Nenhum dispositivo ou endereço" se você usar open ().
Se você ls -l /tmp/st.socket
provavelmente verá algo como
srwxrwxrwx 1 root root 0 Jan 24 2012 /tmp/st.socket
O 's' no começo da linha indica que /tmp/st.socket é um soquete.