-
Verifique se nenhum aplicativo tem a porta aberta quando você quiser usá-lo.
-
Verifique se não há mensagens no log do kernel (use
dmesg). -
Verifique o que exatamente está acontecendo em seu aplicativo - execute-o em
strace, que informará os syscalls feitos pelo aplicativo. Você provavelmente quer que você use algo como:$ strace -f -s 512 -o /path/to/application.log.strace application ...
que também irá strace children processa, log strings ap para seu 512º byte e tudo o que vai acabar em /path/to/application.log.strace , as reticências significam possíveis argumentos para aplicação. Você também pode informar strace para anexar a um processo em execução identificado por PID ( -p argument). Veja a página strace(1) man para mais informações. Em vez disso, no final do log, você deve conseguir encontrar uma chamada write() que imprime a mensagem de erro. As chances são de que relativamente logo antes disso será um open() ou write() (no arquivo do dispositivo) que retornou -1. Isso pode dar uma ideia de qual é o motivo do erro.
Como uma observação sobre as permissões: você não quer usar chmod 777 , pois isso torna o arquivo executável e isso nunca é uma boa idéia com qualquer outra coisa, além de executáveis e diretórios. Para arquivos de dispositivos (dependendo de sua natureza), valores razoáveis são 0640 ou 0660, o que permite acesso total para root e acesso de leitura ou leitura / gravação para grupo (do qual o usuário em questão deve ser um membro para obter as permissões - no seu caso) é provável que o grupo dialout que você mencionou).
Na maioria dos casos, você também deseja adicionar um zero (por exemplo, chmod 0664 , já que remove todos os bits suid, o que geralmente é uma boa ideia).