2

2つのファイルに直接アクセスできるという観点から書かれた「ライブラリ」(変更したくないコードの選択)があります。ファイル記述子で直接「open」、「read」、「seek」の posix 呼び出しを使用します。

ただし、現在、標準の IO 呼び出しではアクセスできない独自のファイル システムがあります。コードを書き直したくないので、IO 呼び出しを既知の関数にリダイレクトして、インターフェイスとして使用できれば素晴らしいことです。

「読み取り」と「シーク」を新しい関数呼び出しで上書きできるように、上記で使用した呼び出しを変更する方法はありますか?

ありがとう。

4

3 に答える 3

4

ライブラリ コードを変更したくないという場合、既存のバイナリ コードを使用したいということですか、それともソースだけを使用したいということですか? ソースがあり、再コンパイルできる場合は-Dread=my_read -Dopen=my_open、ライブラリをビルドするときに etc. をコンパイラに渡し、独自のmy_readetc. 関数を提供します。

于 2011-08-10T16:47:26.823 に答える
3

試すことができる 1 つのことは、ライブラリ関数の挿入です。

于 2011-08-10T15:17:28.367 に答える
1

既に述べた関数の挿入とマクロを使用した関数呼び出しの名前変更に加えて、別の Linux のみのオプションは、Filesystem in Userspaceを使用することです。このようにして、独自のファイルシステムを、標準の POSIX ファイルシステム API を使用する他のアプリケーションからアクセスできるようにすることができます。FUSE hello world の例は驚くほど短いです。

于 2011-08-10T17:33:30.940 に答える