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