-
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).