web-dev-qa-db-ja.com

ファイルの範囲の「ビュー」を作成するLinuxシステムコールはありますか?

Linuxは、バッキングファイルの限られたバイト範囲の「ビュー」を作成できるシステムコールを提供していますか?たとえば、開いているファイル記述子に作用し、それを変更するか、ファイルオフセットが範囲の先頭からの相対で、範囲の末尾で終了する新しいファイル記述子を生成するものを想定しています。

使用例は、協調しないサブプロセスを入力ファイルの特定の部分のみにアクセスするように制限することです。

7
llasram

これを行う1つの方法は、ループデバイスを使用することです。このアプローチには2つの要件があり、あまり役に立たない可能性があります。それを設定するにはrootである必要があり、非協調サブプロセスはブロックデバイスに書き込みできる必要があります。ああ、それは相反する変更には対応していません。

ループデバイスを設定するには、次のコマンドを実行します。

losetup -o 1024 --sizelimit 2048 --show -f yourfile

10242048yourfileを適切な値に置き換えます— -oは開始オフセットを指定し、--sizelimitはサイズ(オフセットから数えます)を指定します。 sizelimitは512の倍数でなければならないことに注意してください。

これは、セットアップされたループデバイスの名前を出力します。必要に応じて権限を調整し、非協力サブプロセスに付与します。デバイスが不要になった場合は、

losetup -d /dev/loopN

Nを適宜置き換えます。

12
Stephen Kitt