syscall EXPR, LIST |
可让Perl来直接调用相应的UNIX C系统调用。它依赖于组的Perl的头文件syscall.ph其中声明所有这些调用的存在。 正常执行的脚本h2ph,Perl安装时设置了syscall.ph文件。每次调用都具有相同的名称,相当于UNIX系统调用的“SYS_”前缀。 由于这些调用实际上是通过控制相关的C系统,函数必须小心传递参数。
作为参数传递给syscall()列表的第一个元素,本身是相应的UNIX系统调用(即“SYS_”前缀)名称。在列表中的下一个元素被解释为这个调用的参数。传递C int类型的数值。传递的字符串值指向数组的指针。这些字符串的长度必须能够应付任何分配到该在调用中的参数的值。
-1 - 系统调用失败
系统函数的返回值
试试下面的例子:
#!/usr/bin/perl -w #by www.gitbook.net require("syscall.ph"); $pid = syscall(&SYS_getpid); print "PID of this process is $pid\n"; # To create directory use the following $string = "newdir"; syscall( &SYS_mkdir, $string );
这将产生以下结果:
PID of this process is 16335