讓腳本休眠 (整數) EXPR 秒,如果沒有給定引數,則永遠休眠。傳回實際休眠的整數秒數。
EXPR 應該是一個正整數。如果呼叫時帶有負整數,sleep
不會休眠,而是發出警告,設定 $!
(errno
),並傳回零。
如果呼叫時帶有非整數,小數部分會被忽略。
允許 sleep 0
,但仍會呼叫底層平台實作的函式,並產生任何可能有的副作用。因此,sleep 0
並不等同於完全不休眠。
如果程序收到訊號,例如 SIGALRM
,可能會中斷。
eval {
local $SIG{ALRM} = sub { die "Alarm!\n" };
sleep;
};
die $@ unless $@ eq "Alarm!\n";
您可能無法混合 alarm
和 sleep
呼叫,因為 sleep
通常使用 alarm
實作。
在某些較舊的系統上,它可能會比您要求的少休眠整整一秒,具體取決於它如何計算秒數。大多數現代系統總是休眠完整的時間。但是,它們看起來可能會休眠更長的時間,因為在繁忙的多工處理系統中,您的程序可能不會立即被排程。
對於比一秒更精細的延遲,Time::HiRes 模組(來自 CPAN,從 Perl 5.8 開始成為標準發行的一部分)提供 usleep
。您也可以使用 Perl 的 select
四個引數版本,讓前三個引數未定義,或者您可能可以使用 syscall
介面存取 setitimer(2)(如果您的系統支援)。請參閱 perlfaq8 以取得詳細資料。