聘我网

新概念招聘3.0

open和sysopen区别是什么

vote up0vote downstar

在哪种情况下会有区别?

 

1 个答复

vote up0vote downcheck

opensysopen最终都会调用sys_open这个系统调用。

不同的是open在该系统调用外面包了一层,

使得打开文件,管道和重定向操作等非常容易,

但同时也失去了一些灵活性。

比如要用文件实现互锁的功能,

就不能用:

-f "filename" or open FH ">filename";

因为理论上可能在前后半句之间文件被创建了,

应该用sysopen:

use Fcntl qw(:DEFAULT :flock);
sysopen(FH, "filename", O_WRONLY | O_CREAT)
or die "can't open filename: $!";
flock(FH, LOCK_EX)
or die "can't lock filename: $!";
truncate(FH, 0)
or die "can't truncate filename: $!";
$| = 1;
print 1;
sleep 100;
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.