このファイルに正の整数しかパイプできないのはなぜですか?

このファイルに正の整数しかパイプできないのはなぜですか?

正の整数のみを含む文字列を にパイプすると/sys/class/backlight/intel_backlight/brightness機能します。ただし、試した他の項目を含む文字列をパイプすると、エラーメッセージが表示されます。

$ sudo su -c "echo 10 >/sys/class/backlight/intel_backlight/brightness"
$ sudo su -c "echo -- -1 >/sys/class/backlight/intel_backlight/brightness"
bash: line 0: echo: write error: Invalid argument
$ sudo su -c "echo aa >/sys/class/backlight/intel_backlight/brightness"
bash: line 0: echo: write error: Invalid argument
$ sudo su -c "echo 10.2 >/sys/class/backlight/intel_backlight/brightness"
bash: line 0: echo: write error: Invalid argument

最初は、これが特別な種類のファイルであると思っていましたが、一般的なファイルのようです。

$ file /sys/class/backlight/intel_backlight/brightness
/sys/class/backlight/intel_backlight/brightness: ASCII text

どうなりますか?

答え1

このファイルは特殊ファイルであり、カーネルは他の入力を拒否するため、このファイルには負以外の整数のみを書き込むことができます。特別なファイル形式を持つという意味では、特別なファイルではありませんが、特別なファイルシステムにあるため、特別なファイルです。 「一般」ファイルシステムにアクセスすると、カーネルはファイルの内容を解釈せずにディスクに保存します。でも訪れたら/procプロセスファイルシステム)または/sysシステムファイルシステム)、データはディスクに保存されず、アクセスはカスタムカーネルコードを呼び出します。この/sys/class/backlight/intel_backlight/brightnessカスタムコードなどのファイルには、0といくつかのハードウェアによる最大値の間の整数が必要ですwrite

関連情報