Perl 编程/关键字/syscall
外观
syscall使用列表的第一个元素(最多可包含 14 个参数)进行系统调用。剩余的参数作为系统调用的参数一起传递。如果命令未实现,syscall会引发异常。
所有给定的数字参数将作为int传递。如果不是,则会传递指向字符串值的指针。字符串字面量(或其他只读字符串)不允许作为参数,因为 Perl 必须假设任何字符串指针都可能被写入。如果整数参数不是字面量,并且从未在数字上下文中解释过,则可能需要添加0强制它们看起来像数字。
syscall模拟syswrite函数(反之亦然)
syscall返回被调用的系统调用返回的任何值。失败时,-1将被返回,并且$!(errno) 会被设置。由于某些系统调用可以合法地返回-1, 0应该在调用之前分配给$!。
syscall(&SYS_pipe)返回它创建的管道的读端的文件号,但没有办法检索另一端的的文件号。这是一个可以通过使用pipe来避免的问题。
syscall NUMBER, LIST
require 'syscall.ph'; # You may need to run h2ph
$s = "Helloǃ\n";
syscall(&SYS_write, fileno(STDOUT), $s, length $s)
syscall |
sysopen |
sysread |
sysseek |
system |
syswrite
|