Périphérique de caractères (/dev) sous Linux

1. Introduction

        dev est l'abréviation anglaise de device. Le répertoire /dev est très important pour tous les utilisateurs. Parce que ce répertoire contient tous les périphériques externes utilisés dans le système Linux. Mais ici, ce n'est pas le pilote du périphérique externe, qui est différent des systèmes d'exploitation Windows et DOS. C'est en fait un port pour accéder à ces périphériques externes. Nous pouvons accéder à ces périphériques externes très facilement, ce qui n'est pas différent de l'accès à un fichier ou à un répertoire.

2. Répertoire /dev

Il existe deux types de fichiers de périphérique : les fichiers de périphérique en mode bloc (b) et les fichiers de périphérique en mode caractère (c). Les fichiers de périphérique sont généralement stockés dans le répertoire /dev.

Fichiers de périphérique communs :

/dev/hd[a-t]:IDE设备

/dev/sd[a-z]:SCSI设备

/dev/fd[0-7]:标准软驱

/dev/md[0-31]:软raid设备

/dev/loop[0-7]:本地回环设备

/dev/ram[0-15]:内存

/dev/null:无限数据接收设备,相当于黑洞

/dev/zero:无限零资源

/dev/tty[0-63]:虚拟终端

/dev/ttyS[0-3]:串口

/dev/lp[0-3]:并口

/dev/console:控制台

/dev/fb[0-31]:framebuffer

/dev/cdrom => /dev/hdc

/dev/modem => /dev/ttyS[0-9]

/dev/pilot => /dev/ttyS[0-9]

/dev/random:随机数设备

/dev/urandom:随机数设备

Pour une interprétation plus détaillée, voir :

Explication détaillée du pilote de périphérique de caractères Linux - blog d'un passionné de l'embarqué - blog CSDN

Créer une méthode de périphérique de caractère

130|zyy:/dev # mknod  /dev/zyydev  c  4090   40900
zyy:/dev # ls -l | grep zyydev
crw-rw----  1 root      root            4090, 40900 2023-03-21 16:11 zyydev

Pour supprimer un périphérique de caractères, utilisez rmmod.

Référence de signification de bas niveau pour la création de périphériques de caractères

[3] Comment créer un périphérique de caractère

3. Interface

Par exemple, /dev/sda signifie le premier disque SCSI/IDE et /dev/vda signifie le premier disque virtio. Le programme d'application accède à ces équipements en accédant à ces fichiers d'équipement en tant que fichiers d'exploitation. Les interfaces utilisables incluent :

int open(const char *path, int oflag, ... )

int close(int fd);

ssize_t écriture(int fd, const void *buf, size_t nbyte)

ssize_t lire(int fd, void *buf, size_t nbyte)

int ioctl(int d, int requête, ...)

Sur les systèmes Linux, les pilotes de périphérique peuvent être chargés et supprimés dynamiquement

lsmod - liste les modules actuellement chargés

insmod <module_file> - insère/charge le fichier de module spécifié

modprobe <module> - insère/charge le module spécifié et toutes les dépendances

rmmod <module> - supprime/décharge un module spécifique

Si vous voulez concevoir du code pour lire et écrire /dev/*, vous pouvez apprendre du code en langage C de ce blog

Communication interprocessus - Famous Pipeline (FIFO)_Famous Pipeline Multiple Processes Read and Write_flyhelloword's Blog-CSDN Blog

Si vous souhaitez utiliser le périphérique de nombre aléatoire pour générer des nombres aléatoires hexadécimaux

#!/bin/bash
i=0
while [ $i -lt 10 ]
do
        data1=` printf "%x\n" $(($RANDOM%255))`
        data2=` printf "%x\n" $(($RANDOM%255))`
        echo " [$i] data is: $data1 $data2"
        sleep 0.1
        ((i++))
done

Résultats de test:

# sh testrandom.sh
 [0] data is: 4c ba
 [1] data is: eb 8f
 [2] data is: 54 64
 [3] data is: 8a c4
 [4] data is: 1b 4f
 [5] data is: b4 b8
 [6] data is: 37 5f
 [7] data is: 6d 2e
 [8] data is: 2c b4
 [9] data is: 6e 93

4. Enfin

Ce blog analyse les dispositifs de caractère.

Je suppose que tu aimes

Origine blog.csdn.net/qq_33163046/article/details/130697325
conseillé
Classement