實作 ioctl(2) 函式。您可能首先必須說
require "sys/ioctl.ph"; # probably in
# $Config{archlib}/sys/ioctl.ph
取得正確的函式定義。如果 sys/ioctl.ph 不存在或沒有正確的定義,您必須根據您的 C 標頭檔(例如 <sys/ioctl.h>)自行建立。有一個稱為 h2ph 的 Perl 腳本隨 Perl 套件附帶,它可能有助於您執行此操作,但並非微不足道。)SCALAR 會根據 FUNCTION 進行讀取和/或寫入;指向 SCALAR 字串值的 C 指標會作為實際 ioctl
呼叫的第三個參數傳遞。(如果 SCALAR 沒有字串值,但有數值,則會傳遞該值,而不是傳遞指向字串值的指標。若要保證如此,請在使用標量之前在其後加上 0
。)pack
和 unpack
函式可能需要用於處理 ioctl
使用的結構的值。
if OS returns: then Perl returns:
-1 undefined value
0 string "0 but true"
anything else that number
因此 Perl 在成功時傳回 true,在失敗時傳回 false,但您仍可輕鬆地確定作業系統所傳回的實際值
my $retval = ioctl(...) || -1;
printf "System returned %d\n", $retval;
特殊字串 "0 but true"
豁免於 Argument "..." isn't numeric
警告,在不當的數字轉換上。
可移植性問題:"ioctl" in perlport。