C 中有一种使用文件句柄进行查找的方法,
int fseek(FILE *stream, long offset, int whence);
fdinfo
每个文件描述符还有一个文件,
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