Existe alguma maneira de interagir com todos os itens que estão no diretório '/ dev'? [fechadas]

0

Existe alguma maneira de interagir com todos os itens que estão no diretório /dev ? Pelo que entendi, a maioria dos itens no diretório /dev não são arquivos "normais". Eu quero saber se há algum comando ou qualquer maneira que você possa interagir com eles, seja listando suas propriedades ou fazendo outras coisas com / para eles.

    
por StrangeRanger 16.01.2018 / 02:44

1 resposta

3

Esta é uma pergunta engraçada. Vou citar seu comentário:

Since most things are files, is there a way to see what they contain using some kind of editor?

Isso revela um equívoco (que eu mesmo tive como iniciante) de que "tudo é um arquivo" deve ser tomado literalmente.

Um "arquivo" é, obviamente, uma coleção de bytes, com um nome, considerado como uma unidade individual e geralmente armazenado em disco.

Quando você ouve, "No UNIX, tudo é um arquivo", esta não é a definição de "arquivo" sendo usado.

Em vez disso, um "arquivo" nesse sentido é "algo que pode ser acessado ou manipulado de alguma forma usando as chamadas de sistema padrão para lidar com arquivos."

Sistemas de arquivos virtuais como /proc exemplificam isso muito bem. Os "arquivos" e "diretórios" em /proc não são arquivos e diretórios reais armazenados no disco. Eles não são armazenados em qualquer lugar.

Em vez disso, quando um processo tenta ler de um desses arquivos— usando as mesmas chamadas de sistema que são usadas para ler arquivos - o kernel manipula as chamadas de maneira diferente. Em vez de obter dados do disco e retornar isso, o kernel responde diretamente com os dados de tempo de execução apropriados do kernel. Mas é uma abstração "transparente", porque nenhum processo lê dados de arquivos, exceto por pedir ao kernel para fazê-lo. (Esse é o conceito incorporado na frase "chamada de sistema".)

Agora, as entradas de diretório em /dev são "arquivos especiais". Nem todas as chamadas do sistema relacionadas a arquivos são aplicáveis a cada uma delas. No entanto, a abstração básica, que qualquer tipo de dispositivo especial ou qualquer pode ser tratado por um processo como se fosse um arquivo, ainda é válido na maior parte dos casos. / p>

Como as entradas em /dev são abstrações de muitos tipos de coisas que são realmente diferentes, não é fácil fornecer uma única resposta genérica que cubra todos os tipos de coisas que você pode fazer com todos deles.

No entanto, para realmente entender o que essas entradas são e o que elas significam e como lidar com elas, leia:

"Arquivo" sempre significa "algo com uma entrada de diretório", que pode ou não ser um arquivo normal, e "arquivo normal" sempre significa "coleção de bytes com um nome ", que geralmente é chamado apenas de" arquivo ".

Para responder ao comentário sobre esta questão, ponto por ponto:

So all of the items within /dev are "files"...

Sim, mas nenhum deve ser um arquivo normal.

...but that does not necessarily mean that they can be edited by the human...

Eu me pergunto quem mais você acha que edita qualquer coisa além de um ser humano? Seja um programador de sistemas que já partiu há muito tempo ou você mesmo, os seres humanos são a única fonte de decisões ou intenção em qualquer sistema de computador. (Veja o trabalho de Mark Burgess para o fundo filosófico sobre isso.): D

Mas acho que entendi o que você quis dizer. Podemos dizer com precisão que os arquivos especiais em /dev não podem ser editados por um "editor de texto" normal porque não são arquivos de texto. E modificar as próprias entradas de /dev requer permissões de root, embora os processos de espaço do usuário (a.k.a. não-raiz) possam usá-los

.

...because a file when referred to, in UNIX, as something that is handled or managed by system calls...

Sim, isso está correto. Tudo o que é chamado de "arquivo" é tratado usando as chamadas do sistema. Isto inclui arquivos regulares, a propósito. Se você usar gedit , a maneira como ele abre o arquivo que você deseja editar é usando uma chamada do sistema. Ele lê o conteúdo do arquivo por meio de outra chamada de sistema.

...but can be edited by a user. Am I correct?

Não, essa última parte não está correta. Nem todos os arquivos podem ser editados por um usuário. Além disso, quando estamos falando nesse nível de detalhe, "editada" é uma palavra muito imprecisa, quase sem sentido.

Em vez disso, devemos dizer que todos os arquivos regulares podem ser manipulados por processos de espaço do usuário por meio de chamadas do sistema para abrir, ler, gravar, etc., embora qualquer uma dessas chamadas de sistema possa falhar por várias causas (permissões insuficientes, tentativa de gravar quando o disco está cheio, tentativa de gravar quando o disco está montado, somente leitura, etc., etc.).

E arquivos especiais também podem ser manipulados por chamadas do sistema, embora, nesse caso, o suporte para cada chamada de sistema individual dependa do tipo de arquivo especial e, em última análise, dependente do driver subjacente que lida com essa chamada de sistema. p>

Para entender melhor os arquivos especiais de blocos e caracteres, consulte:

por 16.01.2018 / 03:05