0

我正在尝试创建一个只读文件,然后使用文件属性检查它是否可读和可写,但它总是返回它是可读和可写的。

我究竟做错了什么?

  use strict;
  use Fcntl;
  sysopen(DATA, "file.txt", O_CREAT | O_RDONLY );
  print DATA "Bob\n";
  close (DATA); 

  my $file='file.txt';
  my (@description,$size);
  if (-e $file)
   {
    push @description, 'readable' if (-r _);
    push @description, 'writable' if (-w _);
    push @description, (($size = -s _)) ? "$size bytes" : 'empty';
    print "$file is ", join(', ',@description),"\n";
    } 

这里打印的是什么:
在此处输入图像描述

有人能帮助我吗?

4

1 回答 1

2

进程的umask值与默认的PERMS值 0666 一起为您提供可写文件。更改您umask的参数或将 PERMS 参数添加到sysopen. 例如要获取一个只读文件,当您默认 umask 为 0022 时,您可以执行以下操作:

sysopen(DATA, "file.txt", O_CREAT | O_RDONLY, 0466 );
于 2013-10-03T13:15:11.813 回答