Vì những người dùng khác đã giải thích rất chi tiết, các tệp đặc biệt yêu cầu mã để sao lưu chúng. Tuy nhiên, dường như không ai đề cập rằng Linux cung cấp một số cách để viết mã đó trong không gian người dùng:
A. FUSE (Hệ thống tập tin trong USErspace) cho phép bạn viết một cái gì đó giống như /proc
không có nguy cơ làm hỏng kernel và thực hiện bằng ngôn ngữ / thời gian chạy mà bạn chọn, chẳng hạn như Go , Node.js , Perl , PHP , Python , Ruby , Rust , vv .
Nó cũng có lợi thế là các hệ thống tập tin FUSE có thể được gắn mà không cần sudo
chạy khi người dùng thực hiện việc gắn kết.
Dưới đây là một số ví dụ về những điều mọi người đã viết bằng FUSE:
- mp3fs (Xem các tệp FLAC của bạn dưới dạng các tệp MP3 được tạo nhanh chóng khi bạn sao chép / nhấp-kéo chúng vào trình phát MP3 của bạn)
- PyTagsFS (Xem phương tiện của bạn trong một cây các thư mục ảo được xây dựng từ các thẻ siêu dữ liệu)
- fuse-zip (tập tin Mount Zip dưới dạng thư mục)
- FuseISO (Mount ISO không có quyền root)
- iFUSE (Mount iDevices)
- FuseDAV (chia sẻ Mount WebDAV)
- fuse-exfat (Mount các hệ thống tập tin định dạng exFAT)
- ntfs-3g ( Trình điều khiển NTFS của Linux)
B. Nếu bạn muốn tạo một thiết bị đầu vào ảo như bàn phím, chuột, cần điều khiển, v.v. (ví dụ: để viết trình điều khiển không gian người dùng cho thiết bị USB mà bạn đang sử dụng libusb
), có uinput .
Ràng buộc cho nó khó tìm hơn, nhưng tôi biết chúng tồn tại cho Go (chỉ dành cho Bàn phím), Python và Ruby (2) .
Ví dụ về sử dụng uinput trong thế giới thực bao gồm:
- G15Daemon (Trình điều khiển Linux cho LCD và các phím chơi trò chơi trên bàn phím chơi game Logitech G15)
- ds4drv (Trình điều khiển cho bộ điều khiển Sony DualShock 4)
- xboxdrv (trình điều khiển bộ điều khiển thay thế Xbox 360 và Linux tương đương với x360ce rất nặng thiết kế các trò chơi như Runner2: Future Legend of Nhịp điệu Alien có thể nghĩ rằng họ đang nói chuyện với một bộ điều khiển Xbox thực khi họ không)
- Các trình điều khiển Wiimote cũ như cwiid được yêu cầu trước khi ai đó cuối cùng đã viết trình điều khiển Wiimote kernel để hỗ trợ sẽ có sẵn theo mặc định.
C. Đối với các thiết bị ký tự chung, có CUSE (Thiết bị ký tự trong USErspace). Nó ít phổ biến hơn mặc dù.
Người sử dụng chỉ số API CUSE mà tôi biết cá nhân của là cùng một chương trình mà nhắc tạo của nó: osspd , mà thực hiện /dev/dsp
, /dev/adsp
và /dev/mixer
(API âm thanh OSS) trong userspace để họ có thể được chuyển qua PulseAudio hoặc DMIX.
Ràng buộc CUSE duy nhất tôi có thể tìm thấy là cusepy , chưa được cập nhật từ năm 2010.
D. Bạn có thể không cần một tập tin đặc biệt mới.
Ví dụ: bạn có thể mở giao tiếp thô với bất kỳ thiết bị USB nào bằng libusb (Danh sách các ràng buộc trên trang) và sau đó liên lạc với các chương trình khác thông qua một số cơ chế khác (ổ cắm TCP / UDP, đọc / ghi stdin / stdout hoặc các tệp thông thường trên đĩa , Vân vân.).