Karena pengguna lain telah menjelaskan dengan sangat rinci, file-file khusus memerlukan kode untuk mendukungnya. Namun, tampaknya tidak ada yang menyebutkan bahwa Linux menyediakan beberapa cara untuk menulis kode itu di userspace:
A. FUSE (Filesystem di USErspace) memungkinkan Anda untuk menulis sesuatu seperti /proc
tanpa risiko menabrak kernel dan melakukannya dalam bahasa / runtime pilihan Anda, seperti Go , Node.js , Perl , PHP , Python , Ruby , Rust , dll .
Ini juga memiliki keuntungan bahwa sistem file FUSE dapat dipasang tanpa sudo
karena mereka berjalan sebagai pengguna melakukan pemasangan.
Berikut adalah beberapa contoh hal-hal yang ditulis orang menggunakan FUSE:
- mp3fs (Lihat file FLAC Anda sebagai file MP3 yang dapat dibuat saat Anda menyalin / mengklik-seret ke pemutar MP3 Anda)
- PyTagsFS (Lihat media Anda di pohon folder virtual yang dibangun dari tag metadata)
- fuse-zip (Pasang file Zip sebagai folder)
- FuseISO (Pasang ISO tanpa izin root)
- iFUSE (Mount iDevices)
- FuseDAV (Mount share WebDAV)
- fuse-exfat (Mount filesystem yang diformat)
- ntfs-3g ( The driver Linux NTFS)
B. Jika Anda ingin membuat perangkat input virtual seperti keyboard, mouse, joystick, dll. (Mis. Untuk menulis driver userspace untuk perangkat USB yang Anda gunakan libusb
), ada uinput .
Bindings untuk itu lebih sulit ditemukan, tetapi saya tahu mereka ada untuk Go (khusus Keyboard), Python , dan Ruby (2) .
Contoh penggunaan uinput dunia nyata meliputi:
- G15Daemon (driver Linux untuk tombol LCD dan gaming pada keyboard gaming Logitech G15)
- ds4drv (Driver untuk pengontrol Sony DualShock 4)
- xboxdrv (driver pengontrol XBox 360 Alternatif dan Linux setara dengan x360ce game yang didesain sangat buruk seperti Runner2: Legend of Rhythm Alien masa depan dapat berpikir bahwa mereka sedang berbicara dengan pengontrol XBox nyata ketika tidak)
- Driver Wiimote lama seperti cwiid yang diperlukan sebelum seseorang akhirnya menulis driver Wiimote kernel sehingga dukungan akan tersedia secara default.
C. Untuk perangkat karakter umum, ada CUSE (Perangkat karakter di USErspace). Ini jauh kurang populer.
Satu-satunya pengguna dari Cuse API bahwa aku secara pribadi sadar adalah program yang sama yang mendorong penciptaan: osspd , yang mengimplementasikan /dev/dsp
, /dev/adsp
dan /dev/mixer
(API audio yang OSS) di userspace sehingga mereka dapat dialihkan melalui PulseAudio atau DMIX.
Satu-satunya CUSE binding yang dapat saya temukan adalah cusepy , yang belum diperbarui sejak 2010.
D. Anda mungkin tidak memerlukan file khusus baru sama sekali.
Sebagai contoh, Anda dapat membuka komunikasi mentah dengan perangkat USB apa pun menggunakan libusb (Daftar binding pada halaman) dan kemudian berkomunikasi dengan program lain melalui beberapa mekanisme lain (soket TCP / UDP, membaca / menulis stdin / stdout atau file biasa pada disk , dll.).