- 论坛徽章:
- 0
|
其实不通用的方法还是有一个
前提是你用的是linux
有
/proc/$pid/fd
这个文件夹
此处
$pid是进程号,可以通过$$取得
fd下面有很多文件描述符,对于一个打开的文件句柄,文件描述符可以通过
fileno($filehander)取得
你自己看看/proc/$pid/fd里面好了,里面的都是软链接,指向文件在硬盘上的位置
你自己新建一个read的文件,然后用下面的脚本试试
- #!/usr/bin/perl
- use strict;
- use warnings;
- open my $file,"<","read" or die "Fail to open $!";
- my $file_num = fileno($file);
- my $raw_data = qx @ file /proc/$$/fd/$file_num @ ;
- chomp $raw_data;
- print "raw data is $raw_data \n";
- print "File name is ",(split /\s+/,$raw_data)[-1],"\n"
复制代码
但这个方法并不是很通用
变态一点可以写成下面那样
- #!/usr/bin/perl
- use strict;
- use warnings;
- open my $file,"<",$ARGV[0] or die "Fail to open $!";
- { local $\ ="\n";
- print "File name is ", map { ( split )[-1] } qx | file /proc/$$/fd/@{[fileno($file)]} |;
- }
复制代码
通过
来运行
[ 本帖最后由 churchmice 于 2008-6-5 14:39 编辑 ] |
|