2012-02-10 9 views
1

Cで開発された私のプログラムで、存在を確認してファイルを読み込む方法(CのLinuxカーネル関数であるかもしれない)/ proc/mtdと/ proc/partitionsを知りたいOpenWrtのために)、fopen、fread、...関数を使わずに?あなたの助けLinux Cプログラムで存在確認と読み込み/ procファイル

+1

なぜ 'fopen'を使用できないのですか? 'open'と' read'の使用も禁じられていますか? – Useless

+0

あなたは 'access(2)'システムコールを使うことができます。http://linux.die.net/man/2/access –

+0

カーネルモジュールをコーディングしていて、カーネル内部で*実行していますか?または、アプリケーションやユーティリティをコーディングしていますか? "Linuxカーネルの機能"とは何を意味しますか? –

答えて

0

を事前に

おかげで、ファイルは、ファイルの統計情報(作成日時、保護など)を取得しようとすることができ存在するかどうかを判断するには。それはあなたがファイルの内容を開いたり読むのを必要としません。エラーコードは、単にアクションを実行する権限がないか、またはファイルが存在しなかったかどうかを示します。

標準のオープンおよびリード関数を使用しないで読むのはなぜですか?車輪を再構築しようとしないでください。

+0

procファイルはディスク内の実ファイルではありません。 procファイルを開くと、カーネルから情報を取得して印刷するためにカーネル関数が呼び出されます。だから私の質問は、mtd procファイルを使用せずにカーネルから直接mtd情報を取得する方法です。 私が開発しているアプリケーションはユーザー空間アプリケーションです。 – developer

+0

@AhmedZRIBI:唯一の方法は、 '/ dev/mtdX'を呼び出し、' ioctl() '呼び出しが利用可能であることを確認してください。 '/ proc'や'/sys'を使う方が簡単です。 '/ proc'を使って何が間違っていますか? – thkala

0

ユーザ空間とカーネルが分離されています。つまり、ユーザー空間のpogramからカーネル関数を呼び出すことはできません。ユーザー空間から、プロファイルから情報を取得する唯一の方法は、それを開いて読み込むことです。

関連する問題