Atualmente, estou trabalhando na implementação do meu próprio comando "ls". Tenho me apoiado na estrutura, mas encontrei uma postagem antiga afirmando que alguns membros dessa estrutura, como d_type
não devem ser usados.
Já consegui listar os arquivos no repositório, mas quero classificá-los de acordo com seu tipo, daí o motivo da minha postagem.
Então, estou apenas me perguntando se existe alguma outra maneira além de usar o d_type
ou se não é realmente errado usá-lo.
Se sua pergunta for sobre o Ubuntu, que é Linux/glibc, descrito em detalhes pela página de manual readdir . Ele
dirent
tem od_type
campo. Mas tenha em mente que ele pode dar a vocêDT_UNKNOWN
a qualquer momento e você deve ser capaz de lidar com isso.A maneira mais portátil (POSIX) de codificar isso seria não confiar em
d_type
nada, já que o POSIX exige apenas os camposd_name
ed_ino
.Então o que fazer se você não tem o campo d_type ou se ele lhe deu um valor desconhecido? Use uma das
stat
funções (para listar arquivos provavelmentelstat
não seguem links) e então para glibc você pode seguir Testando o Tipo de um Arquivo nost_mode
campo no resultado destat
.