Wie andere Benutzer bereits ausführlich erklärt haben, benötigen spezielle Dateien Code, um sie zu sichern. Es scheint jedoch niemand erwähnt zu haben, dass Linux verschiedene Möglichkeiten bietet, diesen Code im Userspace zu schreiben:
A. Mit FUSE (Dateisystem in USErspace) können Sie so etwas wie schreiben, /proc
ohne dass das Risiko eines Absturzes des Kernels besteht, und dies in einer Sprache / Laufzeit Ihrer Wahl, wie z. B. Go , Node.js , Perl , PHP , Python , Ruby , Rust . usw. .
Dies hat auch den Vorteil, dass FUSE-Dateisysteme bereitgestellt werden können, ohne sudo
dass sie ausgeführt werden, während der Benutzer die Bereitstellung vornimmt.
Hier sind einige Beispiele von Dingen, die Leute mit FUSE geschrieben haben:
B. Wenn Sie ein virtuelles Eingabegerät wie eine Tastatur, eine Maus, einen Joystick usw. erstellen möchten (z. B. um einen Userspace-Treiber für ein USB-Gerät zu schreiben, mit dem Sie sprechen libusb
), gibt es eine Eingabe .
Bindungen dafür sind schwerer zu finden, aber ich weiß, dass sie für Go (nur Tastatur), Python und Ruby (2) existieren .
Beispiele für die Verwendung von Eingaben in der Praxis sind:
- G15Daemon (Linux-Treiber für die LCD- und Gaming-Tasten der Logitech G15-Gaming-Tastaturen)
- ds4drv (Treiber für Sony DualShock 4-Controller)
- xboxdrv (Alternativer XBox 360-Controller-Treiber und Linux-Äquivalent zu x360ce, so schlecht gestaltete Spiele wie Runner2: Future Legend of Rhythm Alien können denken, sie sprechen mit einem echten XBox-Controller, wenn sie nicht sind)
- Die alten Wiimote-Treiber wie cwiid , die benötigt wurden, bevor jemand einen Kernel-Wiimote-Treiber geschrieben hat, damit standardmäßig Unterstützung verfügbar ist.
C. Für generische Zeichengeräte gibt es CUSE (Zeichengeräte in USErspace). Es ist jedoch viel weniger beliebt.
Der einzige Benutzer des CUSE API , die ich persönlich bewusst bin , ist das gleiche Programm , das seine Schöpfung aufgefordert: osspd , die implementiert /dev/dsp
, /dev/adsp
und /dev/mixer
(das OSS Audio-API) in User - Space , damit sie mit Pulseaudio oder dmix geleitet werden.
Die einzige CUSE-Bindung, die ich finden konnte, ist cusepy , die seit 2010 nicht mehr aktualisiert wurde.
D. Möglicherweise benötigen Sie überhaupt keine neue Spezialdatei.
Sie können beispielsweise mit libusb (Liste der Bindungen auf der Seite) eine unformatierte Kommunikation mit einem beliebigen USB-Gerät herstellen und dann über einen anderen Mechanismus (TCP / UDP-Sockets, Lesen / Schreiben von stdin / stdout- oder normalen Dateien auf der Festplatte) mit anderen Programmen kommunizieren , usw.).