O que exatamente são itens no diretório / dev?

5

Eu tenho escrito um aplicativo em C ++ que transmite mensagens de rádio escrevendo para um modem conectado à porta serial. Para fazer isso eu preciso pegar um descritor de arquivo usando o código do formulário

fd1=open(“/dev/ttyS0″, O_RDWR | O_NOCTTY | O_NDELAY);

Isso me deixou curioso sobre a natureza dos itens em / dev. Para tentar ter uma ideia do conteúdo desses itens eu tentei um

sudo cat /dev/ttyS0

apenas para receber a mensagem

cat: /dev/ttyS0: Input/output error

que não ajudou em nada a minha compreensão. Esses itens são realmente um arquivo ou apenas um tipo de link que permite acesso à funcionalidade do driver?

    
por mathematician1975 18.07.2012 / 20:09

2 respostas

6

Bem ... tudo no Linux é um arquivo ou diretório. Coisas em / dev são arquivos especiais.

A maioria dos dispositivos é de bloco ou de caractere; no entanto, outros tipos de dispositivos existem e podem ser criados. Em geral, 'dispositivos de bloco' são dispositivos que armazenam ou armazenam dados, 'dispositivos de caracteres' podem ser considerados dispositivos que transmitem ou transferem dados. Por exemplo, unidades de disquete, unidades de disco rígido e unidades de CD-ROM são dispositivos de bloco, enquanto portas seriais, mouse e portas de impressora paralelas são todos dispositivos de caractere. Existe um tipo de esquema de nomenclatura, mas na grande maioria dos casos eles são completamente ilógicos.

Os dispositivos são definidos por tipo, como 'bloco' ou 'caractere', e 'maior' e 'menor'. O número principal é usado para categorizar um dispositivo e o número menor é usado para identificar um tipo de dispositivo específico. Por exemplo, todo o dispositivo IDE conectado ao controlador primário possui um número maior de 3. Os dispositivos mestre e escravo, bem como as partições individuais, são definidos com o uso de números menores.

Extraído da Hierarquia do sistema de arquivos do Linux

2 opções:

  1. Tente

     cat < /dev/ttyS0
    

    e veja se isso funciona.

  2. Você pode resolver esse erro adicionando seu usuário ao mesmo grupo (ou seja, dialout ).

por Rinzwind 18.07.2012 / 20:24
2

De Projeto de Documentação do Linux :

% bl0ck_qu0te%     
por SirCharlo 18.07.2012 / 20:19