Cでファイルハンドルを使用して検索する方法があります。
int fseek(FILE *stream, long offset, int whence);
fdinfo
ファイル記述子ごとに1つのファイルもあります。
cat /proc/self/fdinfo/2
pos: 0
flags: 0100002
mnt_id: 24
私がやりたいことは、fseek
他のプロセスに属するファイルハンドルを呼び出すことです。現在これは可能ですか?
ベストアンサー1
「いいえ」と思いますが訂正してください。
/tmp/f
ここでは、テストファイル()とそのpidを反映し、テストファイルを開き、スリープモードに切り替えるPerlスクリプトを作成します。
echo foobar > /tmp/f;
perl -E'$|=1; print $$; open my $fh, "<", "/tmp/f" or die $!; sleep while 1'
出力されたpidは19992
次のとおりです/proc/19992/fd
。
$ cd /proc/19992/fd/
$ sudo cat 3
foobar
そしてでは/proc/19992/fdinfo
、
$ cat 3
pos: 0
flags: 02100000
mnt_id: 27
$ sudo cat 3 > 3
bash: 3: Permission denied
$ sudo echo "pos=0" > 3
bash: 3: Permission denied