1

同じ問題を抱えている私の友人の1人によるstackoverflowの複製:

このチュートリアルからコードをコピーしました:http ://www.thegeekstuff.com/2012/04/create-proc-files/

そして、私のprocfileを作成したモジュールを作成しました。

「text」をエコーできるprocfileを取得したことを知ってうれしかった>proc/ name_of_procfile

猫と一緒にも読めます!!

私はそれをだましていて、今ではprocfileにかなりの数の値があります-私が猫を飼うときはいつでも、これらの値を順番に調べます:

Q1。どうすればprocfileから値を削除できますか?

また、後で、ファイルがprocfileを読み取るたびに、proc_fileで読み取ったばかりの値を変更する動作を取得しようとします。

Q2。私はこれが私の「intread_info」メソッドで実装されることを知っていますが、これを行う方法についてのポインタはありますか?

4

1 に答える 1

0

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バージョンをインストールし、インストール後にその仮想ディスクのスナップショットを作成します。したがって、何か問題が発生した場合は、常にダメージを元に戻すことができます。そこにすべてのビルドツールとカーネルソースをインストールする必要はありません。この仮想マシンにモジュール/アプリケーションをロードしてテスト/デバッグするだけです。

しかし、とにかく、あなたが触れようとしている領域、より正確には、すでに触れられている領域は、非常に興味深いものです。

幸運を

于 2012-09-29T18:49:39.497 に答える