ioctl FILEHANDLE,FUNCTION,SCALAR

實作 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。)packunpack 函式可能需要用於處理 ioctl 使用的結構的值。

ioctl(和 fcntl)的傳回值如下

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