文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Perl中的文件操作

Perl中的文件操作

时间:2010-07-28  来源:icybay

比较简单的方式有:
open FH, "filename";
open FH, "< filename";
open FH, "> filename";
open FH, ">>filename";
其中,第一种和第二种方式都是代表读文件,没有区别;第三种和第四种方式代表的是写文件,但区别是第三种是覆盖的方式而第四种是追加的方式。当打开一个文件句柄时记得close FH。

当对一个文件同时做多种读写操作时,会出现混乱。而Perl提供了一种可移植的锁定接口flock函数。
锁分为两种:共享锁(LOCK_SH标志)和排它锁(LOCK_EX标志)。共享锁多用于读文件,排它锁多用于写文件。但flock只是实现了劝告性的锁定,不阻止其它进程对文件的操作。只有所有用户都使用文件锁机制时,你才能安全访问一个文件。

flock缺省是阻塞的。
读文件例子:

use Fcntl wq(:DEFAULT :flock);
open (FH, "< filename") or die "can't open filename: $!";
flock(FH, LOCK_SH) or die "can't lock filename: $!";

#read from FH


如果是请求一个非阻塞锁:

flock(FH, LOCK_FH | LOCK_NB) or die "can't lock filename: $!";


锁都是针对文件句柄,不针对文件名。
如果在写文件时使用排它锁,需要使用sysopen打开文件,如:

use Fcntl qw(:DEFALUT :flock);
sysopen(FH, "filename", O_WRONLY | O_CREAT) or die "can't open filename:$!";
flock(FH, LOCK_EX) or die "can't lock filename:$!";


不能锁住一个没有打开的文件,也无法对多个文件使用一个锁。但可以用一个独立的文件充当信号灯,通过该文件中使用共享和排它锁来提供对其他文件的访问。
相关阅读 更多 +
排行榜 更多 +
我要当超人

我要当超人

休闲益智 下载
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载