Q1。
これらの値は、ファイルシステムでの通常の削除操作の意味では削除できません。echo
書き込み可能であれば、procfileに何かを入れることができます。次に、この「受信」データがどのように処理されるかは、モジュールの動作によって異なります。それは保存されるのか、破棄されるのか、それとも何らかの形で内部的に説明されるのか、モジュールが決定します。より正確には、モジュールに入れるロジックが処理を定義します。この例のモジュールのロジックは非常に単純です。カーネルがwrite_info
関数を呼び出すときに、内部バッファーに文字列を記憶します。実際には、新しいデータを現在のコンテンツと連結します。次に、カーネルがread_info関数を呼び出すときに、このバッファーの内容を返すことができます。だからあなたがそうするなら:
echo "some text">/proc/yourprocfile
echo "another text">/proc/yourprocfile
次にcat /proc/yourprocfile
印刷します
some text
another text
画面上。要約すると、これらのファイルの完全な動作はですmodule-defined
。
Q2。
C
これは、通常のプログラムで行うのとほぼ同じように行うことができます。2つの大きな違いがあります。
カーネルモードでアクセス可能なAPIは異なります。C
一部の関数は、標準ライブラリの類似関数と同じまたは非常に類似した名前と機能を持っています。他の関数の名前は異なりますが、それでも一部のユーザースペース関数に類似しています。そして、カーネル空間でのみ利用可能ないくつかの特定の関数。
on the sheet of paper
モジュールにバグがあると、少なくともカーネルコアダンプが発生し(カーネルが停止し、reset
ボタンを押してシステムを再起動する必要があります)、データが破損する可能性があるため、カーネルスペースで行うすべてのことを数回チェックし、デバッグする必要があります。最悪の場合、ファイルシステムの
したがって、VirtualBoxパッケージを設定することをお勧めします。この美しいツールを使用して仮想マシンを作成します。そこに最小のLinuxバージョンをインストールし、インストール後にその仮想ディスクのスナップショットを作成します。したがって、何か問題が発生した場合は、常にダメージを元に戻すことができます。そこにすべてのビルドツールとカーネルソースをインストールする必要はありません。この仮想マシンにモジュール/アプリケーションをロードしてテスト/デバッグするだけです。
しかし、とにかく、あなたが触れようとしている領域、より正確には、すでに触れられている領域は、非常に興味深いものです。
幸運を