Sua pergunta ainda é bastante inespecífica e ampla, e você receberá respostas inespecíficas para perguntas não específicas, que podem ser úteis ou não. Ainda aqui está uma tentativa de apontar você na direção certa.
I would also like to know if there is a way to know whether a file is a regular file or a device file ?
Claro. O mais comum é a saída de ls -l
:
$ ls -l /dev
total 0
crw-rw----+ 1 root audio 14, 4 Jan 5 00:44 audio
crw------- 1 root root 10, 235 Jan 5 00:44 autofs
drwxr-xr-x 2 root root 480 Jan 17 01:20 block
drwxr-xr-x 2 root root 140 Jan 17 01:20 bsg
drwxr-xr-x 3 root root 60 Jan 5 00:44 bus
lrwxrwxrwx 1 root root 3 Jan 17 22:14 cdrom -> sr0
[...]
O primeiro caractere de cada linha de entrada revela o tipo de arquivo; você pode encontrar uma lista de tipos válidos no ls
manual .
Como você está perguntando sobre as entradas em /dev
, os tipos mais comuns lá, além de diretórios e links, são dispositivos de caractere e bloco dispositivos .
is there an integrated function to know the real size of a device file
Como já indiquei, o que você quer dizer com "tamanho real" é o tamanho do conteúdo disponível "em" um dispositivo, dos quais os arquivos especiais em /dev
são apenas uma representação para tornar o acesso a eles disponível para o sistema.
A resposta para "como obter o tamanho" é "depende do conteúdo". Por exemplo. para uma partição de disco, que é um dispositivo de bloco, você geralmente monta e pode obter os tamanhos (total, ocupado, espaço livre) usando df
. Por outro lado, nem todos os dispositivos de bloco podem ser montados.
E sem saber exatamente o que você quer alcançar, isso é tudo que você conseguirá até agora. Agora cabe a você pensar sobre isso, pesquisar na web (está tudo lá) e criar uma nova pergunta se não conseguir descobrir sozinho.