Comme d'autres utilisateurs l'ont déjà expliqué en détail, les fichiers spéciaux nécessitent un code pour les sauvegarder. Cependant, personne ne semble avoir mentionné que Linux fournit plusieurs façons d'écrire ce code dans l'espace utilisateur:
A. FUSE (système de fichiers dans USErspace) vous permet d’écrire quelque chose comme /proc
sans risque de planter le noyau et de le faire dans une langue / exécution de votre choix, telle que Go , Node.js , Perl , PHP , Python , Ruby , Rust , etc. etc .
Il présente également l’avantage que les systèmes de fichiers FUSE peuvent être montés sans, sudo
car ils sont exécutés en tant qu’utilisateur effectuant le montage.
Voici quelques exemples d'éléments écrits par les utilisateurs de FUSE:
- mp3fs (Visualisez vos fichiers FLAC sous forme de fichiers MP3 qui sont créés à la volée lorsque vous les copiez / cliquez-glissez-les sur votre lecteur MP3)
- PyTagsFS (Affichez vos médias dans une arborescence de dossiers virtuels construite à partir des balises de métadonnées)
- fuse-zip (Monter des fichiers Zip en tant que dossiers)
- FuseISO (Monter des ISO sans autorisations root)
- iFUSE (Mount iDevices)
- FuseDAV ( partages Mount WebDAV)
- fuse-exfat (Monter des systèmes de fichiers au format exFAT)
- ntfs-3g ( le pilote Linux NTFS)
B. Si vous souhaitez créer un périphérique d’entrée virtuel, comme un clavier, une souris, une manette de jeu, etc. (par exemple, écrire un pilote d’espace utilisateur pour un périphérique USB avec lequel vous parlez libusb
), vous pouvez entrer .
Les liaisons pour cela sont plus difficiles à trouver, mais je sais qu’elles existent pour Go (clavier uniquement), Python et Ruby (2) .
Voici des exemples d'utilisation réelle dans le monde réel:
- G15Daemon (pilote Linux pour l'écran LCD et les touches de jeu sur les claviers de jeu Logitech G15)
- ds4drv (pilote pour contrôleurs Sony DualShock 4)
- xboxdrv (Pilote de contrôleur XBox 360 alternatif et équivalent de Linux à x360ce pour des jeux aussi mal conçus que Runner2: la légende future du rythme Alien peuvent penser qu’ils parlent à un vrai contrôleur XBox alors qu’ils ne le sont pas)
- Les anciens pilotes Wiimote, tels que cwiid, qui étaient nécessaires avant que quelqu'un écrive enfin un pilote Wiimote du noyau afin que la prise en charge soit disponible par défaut.
C. Pour les périphériques à caractères génériques, il existe CUSE (périphériques à caractères dans USErspace). C'est beaucoup moins populaire cependant.
Le seul utilisateur de l'API Cuse que je suis personnellement au courant est le même programme qui a incité sa création: osspd , qui met en œuvre /dev/dsp
, /dev/adsp
et /dev/mixer
(l'API audio OSS) dans l' espace utilisateur afin qu'ils puissent être acheminés par PulseAudio ou dmix.
La seule liaison CUSE que j'ai pu trouver est Cusepy , qui n'a pas été mise à jour depuis 2010.
D. Vous n’avez peut-être pas besoin d’un nouveau fichier spécial.
Par exemple, vous pouvez ouvrir une communication brute avec n’importe quel périphérique USB à l’aide de libusb (liste des liaisons sur la page), puis communiquer avec d’autres programmes via un autre mécanisme (sockets TCP / UDP, lecture / écriture de fichiers stdin / stdout ou normaux sur disque). , etc.).