Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Perl下的eWoldBlock等效错误号_Windows_Perl_Magic Numbers_Errno - Fatal编程技术网

Windows Perl下的eWoldBlock等效错误号

Windows Perl下的eWoldBlock等效错误号,windows,perl,magic-numbers,errno,Windows,Perl,Magic Numbers,Errno,G'day Stackoverflowers 我是Perl的pragma的作者,它改变了Perl的内置函数,在失败时抛出异常。它类似于,但有词法作用域、可扩展的异常模型、更智能的返回检查和更多更好的错误消息。它将取代Perl未来版本(暂定为5.10.1+)中的Fatal模块,但目前可以从用于Perl 5.8.0及更高版本的CPAN下载 下一版本的autodie将使用LOCK\u NB(非阻塞)选项添加对flock呼叫的特殊处理。虽然失败的flock调用通常会导致autodie下出现异常,但如果返

G'day Stackoverflowers

我是Perl的pragma的作者,它改变了Perl的内置函数,在失败时抛出异常。它类似于,但有词法作用域、可扩展的异常模型、更智能的返回检查和更多更好的错误消息。它将取代Perl未来版本(暂定为5.10.1+)中的
Fatal
模块,但目前可以从用于Perl 5.8.0及更高版本的CPAN下载

下一版本的
autodie
将使用
LOCK\u NB
(非阻塞)选项添加对
flock
呼叫的特殊处理。虽然失败的
flock
调用通常会导致
autodie
下出现异常,但如果返回的errno(
$!
)为
ewoodblock
,则使用
LOCK\u NB
flock
调用失败只会返回false

这样做的原因是人们可以继续编写如下代码:

use Fcntl qw(:flock);

use autodie;   # All perl built-ins now succeed or die.

open(my $fh, '<', 'some_file.txt');

my $lock = flock($fh, LOCK_EX | LOCK_NB);  # Lock the file if we can.

if ($lock) {
    # Opportuntistically do something with the locked file.
}
使用Fcntl qw(:flock);
使用autodie;#所有perl内置现在要么成功,要么消亡。

打开(my$fh,在Win32“native”Perl下,请注意,$^E在33处更具描述性,“进程无法访问该文件,因为另一个进程锁定了文件的一部分”,这是“错误锁定违反”(可从获取)。

对于Windows特定的错误代码,您希望使用
$^E
。在这种情况下,它是33:“进程无法访问该文件,因为另一个进程已锁定该文件的一部分”(
winerror.h
中的
ERROR\u LOCK\u违规


不幸的是,我不认为是在内核中。另一方面,如果微软对Windows错误代码重新编号,几乎所有编写的Windows程序都会停止工作,所以我认为硬编码不会有问题。

太棒了!正是我要找的!非常感谢!这正是我要找的!我不太担心Win32::WinError不是核心。如果它存在,我可以从中提取常量。如果它不存在,我可以始终使用硬编码(但不美观)值33。再次感谢!Win32::WinError可能位于“Windows核心”中,即Perl的每个Win32发行版中包含的模块之一(就像“libwin32”包中的所有内容一样)。