0
尝试使用perl的MMAP,但是从文档页面(Perl mmap)的例子给了错误:的Perl脚本MMAP了错误,因为 “无效参数”
$ perl mmap.pl tmp.bin
mmap: mmap call failed: errno: 22 errmsg: Invalid argument at mmap.pl line 5.
为mmap.pl
代码use Sys::Mmap;
open FILEHANDLE, "+<", $ARGV[0] || die "Failed to open $ARGV[0] $!\n";
mmap($foo, 0, PROT_READ, MAP_SHARED, FILEHANDLE) or die "mmap: $!";
@tags = $foo =~ /<(.*?)>/g;
munmap($foo) or die "munmap: $!";
mmap($bar, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, FILEHANDLE);
substr($bar, 1024, 11) = "Hello world";
不知道如何解决它。
您应该查看您的操作系统文档以查找“mmap(2)”系统调用。请注意可能会失败并将errno设置为EINVAL的原因。如果您仍然需要帮助,您应该编辑您的问题,告诉我们您正在运行的操作系统,并且包含系统mmap文档的相关部分。 – Kenster
什么是$ foo?你应该把'严格使用;使用警告;'来捕捉语法错误。在我看来,无效的参数可能会引用$ foo为空,而这对mmap来说是意外的/不允许的。 – bytepusher
'严格使用;使用警告;'也会在常量名称中捕获拼写错误。始终使用'use strict;使用警告;'!!! – ikegami