内容

名称

POSIX - Perl 接口到 IEEE Std 1003.1

概要

    use POSIX ();
    use POSIX qw(setsid);
    use POSIX qw(:errno_h :fcntl_h);

    printf "EINTR is %d\n", EINTR;

    my $sess_id = POSIX::setsid();

    my $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644);
	# note: that's a filedescriptor, *NOT* a filehandle

说明

POSIX 模块允许你访问所有(或几乎所有)标准 POSIX 1003.1 标识符。其中许多标识符已赋予 Perl 界面。

本文档简要列出了 POSIX 模块中可用的功能。有关大多数功能的一般信息,请查阅操作系统的 man 页。对于标注为与 Perl 内置函数相同或几乎相同的函数,请查阅 perlfunc

第一部分描述了 1003.1 规范中的 POSIX 函数。第二部分描述了信号对象、TTY 对象和其他杂项对象的类。其余部分列出了各种常量和宏,其组织大致遵循 IEEE Std 1003.1b-1993。

[C99] 表示在 C 语言标准 ISO/IEC 9899:1999 版本中添加的功能。如果您的系统遵循较早的标准,则某些功能可能不可用。尝试使用任何缺失的功能将导致致命运行时错误消息。

注意事项

默认情况下所有内容都导出(有一些例外)。这是一个不幸向后兼容功能,强烈不建议使用。您应该阻止导出(通过像往常一样说 use POSIX ();),然后使用完全限定名称(例如 POSIX::SEEK_END),或给出明确的导入列表。如果您不执行上述任一操作并选择默认值(如 use POSIX;),您将向您的名称空间导入数百个符号。

一些函数未实现,因为它们是 C 特定的。如果您尝试调用这些函数,它们将打印一条消息,告诉您它们未实现,并建议使用 Perl 等价函数(如果存在)。例如,尝试访问 setjmp() 调用将引发消息“setjmp() 是 C 特定的:改为使用 eval {}”。

此外,一些不良供应商将声称符合 1003.1,但实际上并非如此:它们将无法通过 PCTS(POSIX 合规性测试套件)。例如,一个供应商可能未定义 EDEADLK,或者 open(2) 设置的 errno 值的语义可能不太正确。Perl 不会尝试验证 POSIX 合规性。这意味着您当前可以成功地说“use POSIX”,然后在程序的后面发现您的供应商很松懈,并且毕竟没有可用的 ICANON 宏。这可以解释为一个错误。

函数

_exit

这与 C 函数 _exit() 相同。它立即退出程序,这意味着缓冲 I/O 不会刷新。

请注意,当使用线程并在 Linux 中时,这不是退出线程的好方法,因为在 Linux 中进程和线程是同一种东西(注意:虽然这是 2003 年初的情况,但正在进行项目在 Linux 中使用具有更多 POSIX 语义的线程)。如果您不想从线程返回,请分离线程。

abort

这与 C 函数 abort() 相同。它使用 SIGABRT 信号终止进程,除非被信号处理程序捕获或该处理程序未正常返回(例如,它执行 longjmp)。

abs

这与 Perl 的内置 abs() 函数相同,返回其数字参数的绝对值(但 POSIX::abs() 必须提供一个显式值(而不是依赖于隐式 $_

$absolute_value = POSIX::abs(42);   # good

$absolute_value = POSIX::abs();     # throws exception
access

确定文件的可访问性。

if( POSIX::access( "/", &POSIX::R_OK ) ){
	print "have read permission\n";
}

失败时返回 undef。注意:不要将 access() 用于安全目的。在 access() 调用和您准备执行的操作之间,权限可能会发生变化:经典的竞争条件

acos

这与 C 函数 acos() 相同,返回其数字参数的反余弦。另请参阅 Math::Trig

acosh

这与 C 函数 acosh() 相同,返回其数字参数的双曲反余弦 [C99]。另请参阅 Math::Trig。在 Perl v5.22 中添加。

alarm

这与 Perl 的内置 alarm() 函数相同,用于启用或禁用 SIGARLM 计时器,但 POSIX::alarm() 必须提供一个显式值(而不是依赖于隐式 $_

POSIX::alarm(3)     # good

POSIX::alarm()      # throws exception
asctime

这与 C 函数 asctime() 相同。它返回一个如下形式的字符串

"Fri Jun  2 18:22:13 2000\n\0"

并且它被这样调用

$asctime = asctime($sec, $min, $hour, $mday, $mon,
		   $year, $wday, $yday, $isdst);

$mon 是从零开始的:1 月等于 0$year 是从 1900 年开始的:2001 年等于 101$wday$yday 默认为零(并且通常会被忽略),并且 $isdst 默认为 -1。

请注意,结果始终为英文。使用 "strftime" 来获取适合当前区域设置的结果。该函数的 %c 格式会生成区域设置的首选表示形式。

asin

这与 C 函数 asin() 相同,返回其数字参数的反正弦。另请参见 Math::Trig

asinh

这与 C 函数 asinh() 相同,返回其数字参数的双曲反正弦 [C99]。另请参见 Math::Trig。在 Perl v5.22 中添加。

assert

未实现,但可以使用 "die" in perlfuncCarp 模块来实现类似的功能。

atan

这与 C 函数 atan() 相同,返回其数字参数的反正切。另请参见 Math::Trig

atanh

这与 C 函数 atanh() 相同,返回其数字参数的双曲反正切 [C99]。另请参见 Math::Trig。在 Perl v5.22 中添加。

atan2

这与 Perl 的内置 atan2() 函数相同,返回由其两个数字参数(即 y 坐标和 x 坐标)定义的反正切。另请参见 Math::Trig

atexit

未实现。atexit() 是 C 特有的:请改用 END {},请参见 perlmod

atof

未实现。atof() 是 C 特有的。Perl 会自动将字符串转换为数字。如果您需要强制标量转换为数字,请在其后添加一个零。

atoi

未实现。atoi() 是 C 特有的。Perl 会自动将字符串转换为数字。如果您需要强制标量转换为数字,请在其后添加一个零。如果您只需要整数部分,请参见 "int" in perlfunc

atol

未实现。atol() 是 C 特有的。Perl 会自动将字符串转换为数字。如果您需要强制标量转换为数字,请在其后添加一个零。如果您只需要整数部分,请参见 "int" in perlfunc

bsearch

bsearch() 未提供。有关在单词表上进行二分查找,请参阅 Search::Dict

calloc

未实现。calloc() 是 C 特有的。Perl 透明地进行内存管理。

cbrt

立方根 [C99]。在 Perl v5.22 中添加。

ceil

这与 C 函数 ceil() 相同,返回大于或等于给定数值参数的最小整数。

chdir

这与 Perl 的内置 chdir() 函数相同,允许更改工作(默认)目录——请参阅 "chdir" in perlfunc——但例外情况是 POSIX::chdir() 必须提供一个显式值(而不是依赖隐式的 $_

$rv = POSIX::chdir('path/to/dir');      # good

$rv = POSIX::chdir();                   # throws exception
chmod

这与 Perl 的内置 chmod() 函数相同,允许更改文件和目录权限——请参阅 "chmod" in perlfunc——但例外情况是 POSIX::chmod() 一次只能更改一个文件(而不是一个文件列表)

$c = chmod 0664, $file1, $file2;          # good

$c = POSIX::chmod 0664, $file1;           # throws exception

$c = POSIX::chmod 0664, $file1, $file2;   # throws exception

与内置的 chmod() 一样,$file 可以是文件名或文件句柄。

chown

这与 Perl 的内置 chown() 函数相同,允许更改文件和目录所有者和组,请参阅 "chown" in perlfunc

clearerr

未实现。请改用方法 IO::Handle::clearerr(),以重置给定流的错误状态(如果有)和 EOF 状态(如果有)。

clock

这与 C 函数 clock() 相同,返回以微秒为单位的已用处理器时间量。

close

关闭文件。这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
POSIX::close( $fd );

如果失败,则返回 undef

另请参阅 "close" in perlfunc

closedir

这与 Perl 的内置 closedir() 函数相同,用于关闭目录句柄,请参阅 "closedir" in perlfunc

cos

这与 Perl 的内置 cos() 函数相同,用于返回其数值参数的余弦,请参阅 "cos" in perlfunc。另请参阅 Math::Trig

cosh

这与 C 函数 cosh() 相同,用于返回其数值参数的双曲余弦。另请参阅 Math::Trig

copysign

返回 x,但带有 y 的符号 [C99]。在 Perl v5.22 中添加。

$x_with_sign_of_y = POSIX::copysign($x, $y);

另请参见 “signbit”

creat

创建一个新文件。这会返回一个文件描述符,类似于 POSIX::open 返回的文件描述符。使用 POSIX::close 关闭文件。

$fd = POSIX::creat( "foo", 0611 );
POSIX::close( $fd );

另请参见 perlfunc 中的“sysopen” 及其 O_CREAT 标志。

ctermid

生成控制终端的路径名。

$path = POSIX::ctermid();
ctime

这与 C 函数 ctime() 相同,等效于 asctime(localtime(...)),请参见 “asctime”“localtime”

cuserid [POSIX.1-1988]

获取当前进程所有者的登录名。

$name = POSIX::cuserid();

注意:此函数自 1990 年以来未在 POSIX 中指定,仅出于向后兼容性而包含。新代码应改用 getlogin()

difftime

这与 C 函数 difftime() 相同,用于返回两个时间(由 time() 返回)之间的时差(以秒为单位),请参见 “time”

div

未实现。div() 是 C 语言特有的,请对常规 / 除法使用 perlfunc 中的“int” 和模运算 %

dup

这类似于 C 函数 dup(),用于复制文件描述符。

这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。

如果失败,则返回 undef

dup2

这类似于 C 函数 dup2(),用于将文件描述符复制到另一个已知文件描述符。

这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。

如果失败,则返回 undef

erf

误差函数 [C99]。在 Perl v5.22 中添加。

erfc

互补误差函数 [C99]。在 Perl v5.22 中添加。

errno

返回 errno 的值。

$errno = POSIX::errno();

这与 $! 的数值相同,请参见 perlvar 中的“$ERRNO”

execl

未实现。execl() 是 C 语言特有的,请参见 perlfunc 中的“exec”

execle

未实现。execle() 是 C 语言特有的,请参阅 perlfunc 中的“exec”

execlp

未实现。execlp() 是 C 语言特有的,请参阅 perlfunc 中的“exec”

execv

未实现。execv() 是 C 语言特有的,请参阅 perlfunc 中的“exec”

execve

未实现。execve() 是 C 语言特有的,请参阅 perlfunc 中的“exec”

execvp

未实现。execvp() 是 C 语言特有的,请参阅 perlfunc 中的“exec”

exit

这与 Perl 的内置 exit() 函数相同,用于退出程序,请参阅 perlfunc 中的“exit”

exp

这与 Perl 的内置 exp() 函数相同,用于返回数字参数的指数(以 e 为底),请参阅 perlfunc 中的“exp”

expm1

等同于 exp(x) - 1,但对于较小的参数值更精确 [C99]。在 Perl v5.22 中添加。

另请参阅 "log1p"

fabs

这与 Perl 的内置 abs() 函数相同,用于返回数字参数的绝对值,请参阅 perlfunc 中的“abs”

fclose

未实现。请改用 IO::Handle::close() 方法,或参阅 perlfunc 中的“close”

fcntl

这与 Perl 的内置 fcntl() 函数相同,请参阅 perlfunc 中的“fcntl”

fdopen

未实现。请改用 IO::Handle::new_from_fd() 方法,或参阅 perlfunc 中的“open”

feof

未实现。请改用 IO::Handle::eof() 方法,或参阅 perlfunc 中的“eof”

ferror

未实现。请改用 IO::Handle::error() 方法。

fflush

未实现。请改用 IO::Handle::flush() 方法。另请参阅 "$OUTPUT_AUTOFLUSH" in perlvar

fgetc

未实现。请改用 IO::Handle::getc() 方法,或参阅 perlfunc 中的“read”

fgetpos

未实现。请改用方法 IO::Seekable::getpos(),或参见 perlfunc 中的“seek”

fgets

未实现。请改用方法 IO::Handle::gets()。类似于 <>,也称为 perlfunc 中的“readline”

fileno

未实现。请改用方法 IO::Handle::fileno(),或参见 perlfunc 中的“fileno”

floor

这与 C 函数 floor() 相同,返回小于或等于数值参数的最大整数值。

fdim

“正差”,如果 x > y,则 x - y,否则为零 [C99]。在 Perl v5.22 中添加。

fegetround

返回当前浮点舍入模式,其中之一是

FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_DOWNWARD

FE_TONEAREST 类似于 "round"FE_TOWARDZERO 类似于 "trunc" [C99]。在 Perl v5.22 中添加。

fesetround

设置浮点舍入模式,参见 "fegetround" [C99]。在 Perl v5.22 中添加。

fma

“融合乘法加法”,x * y + z,可能比显式两个操作更快(且损失更少)[C99]。在 Perl v5.22 中添加。

my $fused = POSIX::fma($x, $y, $z);
fmax

xy 的最大值,但当其中任何一个为 NaN 时,返回另一个 [C99]。在 Perl v5.22 中添加。

my $max = POSIX::fmax($x, $y);
fmin

xy 的最小值,但当其中任何一个为 NaN 时,返回另一个 [C99]。在 Perl v5.22 中添加。

my $min = POSIX::fmin($x, $y);
fmod

这与 C 函数 fmod() 相同。

$r = fmod($x, $y);

它返回余数 $r = $x - $n*$y,其中 $n = trunc($x/$y)$r$x 同号,且幅度(绝对值)小于 $y 的幅度。

fopen

未实现。请改用方法 IO::File::open(),或参见 perlfunc 中的“open”

fork

这与 Perl 的内置 fork() 函数相同,用于复制当前进程,请参阅 "fork" in perlfunc,如果您在 Windows 中,请参阅 perlfork

fpathconf

检索文件或目录上可配置限制的值。这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。

以下内容将确定包含 /var/foo 的文件系统上允许的最长路径名的最大长度。

$fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY );
$path_max = POSIX::fpathconf($fd, &POSIX::_PC_PATH_MAX);

如果失败,则返回 undef

fpclassify

返回以下之一

FP_NORMAL FP_ZERO FP_SUBNORMAL FP_INFINITE FP_NAN

说明参数的类 [C99]。FP_INFINITE 为正无穷或负无穷,FP_NAN 为非数字。FP_SUBNORMAL 表示次正规数(也称为非规格数),即精度很低的非常小的数。FP_ZERO 为零。FP_NORMAL 为其他所有数。在 Perl v5.22 中添加。

fprintf

未实现。fprintf() 是 C 特定的,请参阅 "printf" in perlfunc

fputc

未实现。fputc() 是 C 特定的,请参阅 "print" in perlfunc

fputs

未实现。fputs() 是 C 特定的,请参阅 "print" in perlfunc

fread

未实现。fread() 是 C 特定的,请参阅 "read" in perlfunc

free

未实现。free() 是 C 特定的。Perl 以透明的方式进行内存管理。

freopen

未实现。freopen() 是 C 特定的,请参阅 "open" in perlfunc

frexp

返回浮点数的尾数和指数。

($mantissa, $exponent) = POSIX::frexp( 1.234e56 );
fscanf

未实现。fscanf() 是 C 特定的,请改用 <> 和正则表达式。

fseek

未实现。请改用方法 IO::Seekable::seek(),或参阅 "seek" in perlfunc

fsetpos

未实现。请改用 IO::Seekable::setpos() 方法,或查找 "seek" in perlfunc

fstat

获取文件状态。这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。返回的数据与 Perl 内置 stat 函数返回的数据相同。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
@stats = POSIX::fstat( $fd );
fsync

未实现。请改用 IO::Handle::sync() 方法。

ftell

未实现。请改用 IO::Seekable::tell() 方法,或参见 "tell" in perlfunc

fwrite

未实现。fwrite() 是 C 语言特有的,请改用 "print" in perlfunc

getc

这与 Perl 内置 getc() 函数相同,请参见 "getc" in perlfunc

getchar

从 STDIN 返回一个字符。与 Perl 的 getc() 相同,请参见 "getc" in perlfunc

getcwd

返回当前工作目录的名称。另请参见 Cwd

getegid

返回有效组标识符。类似于 Perl 的内置变量 $(,请参见 "$EGID" in perlvar

getenv

返回指定环境变量的值。相同的信息可通过 %ENV 数组获得。

geteuid

返回有效用户标识符。与 Perl 的内置 $> 变量相同,请参见 "$EUID" in perlvar

getgid

返回用户的实际组标识符。类似于 Perl 的内置变量 $),请参见 "$GID" in perlvar

getgrgid

这与 Perl 内置 getgrgid() 函数相同,用于按组标识符返回组条目,请参见 "getgrgid" in perlfunc

getgrnam

这与 Perl 的内置 getgrnam() 函数相同,用于按组名返回组条目,请参阅 perlfunc 中的“getgrnam”

getgroups

返回用户的补充组的 ID。类似于 Perl 的内置变量 $),请参阅 perlvar 中的“$GID”

getlogin

这与 Perl 的内置 getlogin() 函数相同,用于返回与当前会话关联的用户名,请参阅 perlfunc 中的“getlogin”

getpayload
use POSIX ':nan_payload';
getpayload($var)

返回 NaN 有效负载。在 Perl v5.24 中添加。

请注意 “setpayload” 中的 API 不稳定性警告。

有关 NaN 的更多讨论,请参阅 “nan”

getpgrp

这与 Perl 的内置 getpgrp() 函数相同,用于返回当前进程的进程组标识符,请参阅 perlfunc 中的“getpgrp”

getpid

返回进程标识符。与 Perl 的内置变量 $$ 相同,请参阅 perlvar 中的“$PID”

getppid

这与 Perl 的内置 getppid() 函数相同,用于返回当前进程的父进程的进程标识符,请参阅 perlfunc 中的“getppid”

getpwnam

这与 Perl 的内置 getpwnam() 函数相同,用于按用户名返回用户条目,请参阅 perlfunc 中的“getpwnam”

getpwuid

这与 Perl 的内置 getpwuid() 函数相同,用于按用户标识符返回用户条目,请参阅 perlfunc 中的“getpwuid”

gets

STDIN 返回一行,类似于 <>,也称为 readline() 函数,请参阅 perlfunc 中的“readline”

注意:如果您有仍然使用 gets() 的 C 程序,请非常小心。gets() 函数是一个无尽的悲伤来源,因为它没有缓冲区溢出检查。它绝不应该被使用。相反,应该优先使用 fgets() 函数。

getuid

返回用户的标识符。与 Perl 的内置 $< 变量相同,请参阅 perlvar 中的“$UID”

gmtime

这与 Perl 的内置 gmtime() 函数相同,用于将自纪元以来的秒数转换为格林尼治标准时间中的日期,请参阅 perlfunc 中的“gmtime”

hypot

等效于 sqrt(x * x + y * y),但对于非常大或非常小的参数更稳定 [C99]。在 Perl v5.22 中添加。

ilogb

整数二进制对数 [C99]。Perl v5.22 中添加。

例如,ilogb(20) 是 4,作为一个整数。

另请参阅 "logb"

Inf

作为常量的无穷大

use POSIX qw(Inf);
my $pos_inf = +Inf;  # Or just Inf.
my $neg_inf = -Inf;

另请参阅 "isinf""fpclassify"

isalnum

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:alnum:]]+ $ /x 非常相似,您应该转换为使用它。请参阅 "POSIX 字符类" in perlrecharclass

isalpha

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:alpha:]]+ $ /x 非常相似,您应该转换为使用它。请参阅 "POSIX 字符类" in perlrecharclass

isatty

返回一个布尔值,指示指定的文件句柄是否连接到 tty。类似于 -t 运算符,请参阅 "-X" in perlfunc

iscntrl

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:cntrl:]]+ $ /x 非常相似,您应该转换为使用它。请参阅 "POSIX 字符类" in perlrecharclass

isdigit

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:digit:]]+ $ /x 非常相似,您应该转换为使用它。请参阅 "POSIX 字符类" in perlrecharclass

isfinite

如果参数是一个有限数字(即不是无穷大或非数字),则返回 true [C99]。Perl v5.22 中添加。

另请参阅 "isinf""isnan""fpclassify"

isgraph

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:graph:]]+ $ /x 非常相似,您应该转换为使用它。请参阅 "POSIX 字符类" in perlrecharclass

isgreater

(还有 isgreaterequalislessislessequalislessgreaterisunordered)

处理 NaN 的浮点比较 [C99]。Perl v5.22 中添加。

isinf

如果参数是无穷大(正无穷或负无穷),则返回 true [C99]。Perl v5.22 中添加。

另请参见 "Inf""isnan""isfinite""fpclassify"

islower

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:lower:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

isnan

如果参数是 NaN(非数字),则返回 true [C99]。Perl v5.22 中添加。

请注意,您还可以使用 相等运算符==!=)测试 "NaN",如下所示

print "x is not a NaN\n" if $x == $x;

因为 NaN 不等于任何东西,包括它自己

另请参见 "nan""NaN""isinf""fpclassify"

isnormal

如果参数是正常的(即不是次正规/非正规、不是无穷大或非数字),则返回 true [C99]。Perl v5.22 中添加。

另请参见 "isfinite""fpclassify"

isprint

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:print:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

ispunct

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:punct:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

issignaling
use POSIX ':nan_payload';
issignaling($var, $payload)

如果参数是信号 NaN,则返回 true。Perl v5.24 中添加。

请注意 “setpayload” 中的 API 不稳定性警告。

有关 NaN 的更多讨论,请参阅 “nan”

isspace

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:space:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

isupper

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:upper:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

isxdigit

此函数已从 Perl v5.24 中移除。它与匹配 qr/ ^ [[:xdigit:]]+ $ /x 非常相似,您应该转换为使用它。请参见 "POSIX 字符类" in perlrecharclass

j0
j1
jn
y0
y1
yn

零阶第一类贝塞尔函数。

kill

这与 Perl 的内置 kill() 函数相同,用于向进程发送信号(通常用于终止进程),请参见 "kill" in perlfunc

labs

未实现。(用于返回长整数的绝对值。)labs() 是 C 语言特有的,请改用 "abs" in perlfunc

lchown

这与 C 函数相同,除了参数的顺序与 Perl 的内置 chown() 一致,并增加了仅限一个路径的限制,而不是路径列表。与 chown() 函数执行相同操作,但更改符号链接的所有者,而不是符号链接指向的文件。

POSIX::lchown($uid, $gid, $file_path);
ldexp

这与 C 函数 ldexp() 相同,用于将浮点数乘以 2 的幂。

$x_quadrupled = POSIX::ldexp($x, 2);
ldiv

未实现。(用于计算长整数的商。)ldiv() 是 C 语言特有的,请改用 /int()

lgamma

Gamma 函数的对数 [C99]。在 Perl v5.22 中添加。

另请参见 "tgamma"

log1p

等效于 log(1 + x),但对于较小的参数值,结果更稳定 [C99]。在 Perl v5.22 中添加。

log2

以 2 为底的对数 [C99]。在 Perl v5.22 中添加。

另请参见 "expm1"

logb

整数二进制对数 [C99]。Perl v5.22 中添加。

例如,logb(20) 为 4,作为浮点数。

另请参见 "ilogb"

这与 Perl 的内置 link() 函数相同,用于创建文件的硬链接,请参见 "link" in perlfunc

localeconv

获取数字格式化信息。返回对哈希的引用,其中包含当前作为程序基础的语言环境的格式化值,无论是否从 use locale 的作用域内调用它。此函数的用户还应阅读 perllocale,其中全面讨论了 Perl 语言环境处理,包括 专门针对此函数的部分。在 Perl 5.28 之前,或在非线程安全环境中操作时,不应在多线程应用程序中使用它,除非确定基础语言环境为 C 或 POSIX。这是因为它会更改语言环境,从而同时全局影响所有线程。从 Visual Studio 2005 开始的 Windows 平台大多是线程安全的,但在 Visual Studio 2015 之前的平台中使用此函数可能会与已调用 "switch_to_global_locale" in perlapi 的线程竞争。

以下是查询de(德语或德语)区域设置的数据库的方法。

my $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" );
print "Locale: \"$loc\"\n";
my $lconv = POSIX::localeconv();
foreach my $property (qw(
	decimal_point
	thousands_sep
	grouping
	int_curr_symbol
	currency_symbol
	mon_decimal_point
	mon_thousands_sep
	mon_grouping
	positive_sign
	negative_sign
	int_frac_digits
	frac_digits
	p_cs_precedes
	p_sep_by_space
	n_cs_precedes
	n_sep_by_space
	p_sign_posn
	n_sign_posn
	int_p_cs_precedes
	int_p_sep_by_space
	int_n_cs_precedes
	int_n_sep_by_space
	int_p_sign_posn
	int_n_sign_posn
))
{
	printf qq(%s: "%s",\n),
		$property, $lconv->{$property};
}

int_p_int_n_开头的成员由 POSIX.1-2008 添加,并且仅在支持它们的系统上可用。

对于数字条目返回的值 -1 表示该字段不适用于区域设置。这种情况很少见,除了 C 和相关区域设置中,其中没有定义大多数货币值。它还可能发生在其他布尔字段中,以表示该值既不是真也不是假。当货币符号既不位于正值的前面也不位于正值的后面,而是通过替换基数字符来插入时,这种情况发生在p_cs_precedesint_p_cs_precedes中。

在 Perl v5.37.7 之前,空字符串字段和值为 -1 的数字字段从返回的哈希中省略。

localtime

这与 Perl 的内置localtime()函数相同,用于将自纪元以来的秒数转换为日期,请参阅perlfunc 中的“localtime”,但POSIX::localtime()必须提供一个显式值(而不是依赖于隐式$_

@localtime = POSIX::localtime(time);    # good

@localtime = localtime();               # good

@localtime = POSIX::localtime();        # throws exception
log

这与 Perl 的内置log()函数相同,返回数值参数的自然(以e为底)对数,请参阅perlfunc 中的“log”

log10

这与 C 函数log10()相同,返回数值参数的以 10 为底的对数。您还可以使用

sub log10 { log($_[0]) / log(10) }

sub log10 { log($_[0]) / 2.30258509299405 }

sub log10 { log($_[0]) * 0.434294481903252 }
longjmp

未实现。longjmp()是特定于 C 的:请改用perlfunc 中的“die”

lseek

移动文件的读/写位置。这使用文件描述符,例如通过调用POSIX::open获得的文件描述符。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
$off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET );

如果失败,则返回 undef

lrint

根据当前浮点舍入模式,将参数舍入到最接近(如"round")、零(如"trunc")、向下(朝向负无穷大)或向上(朝向正无穷大)[C99]。在 Perl v5.22 中添加。

有关舍入模式,请参阅"fegetround"

lround

"round"类似,但作为整数,而不是浮点 [C99]。在 Perl v5.22 中添加。

另请参阅"ceil""floor""trunc"

由于疏忽,目前未默认导出此项,或作为:math_h_c99导出标记的一部分;因此必须通过显式名称导入它。

malloc

未实现。malloc() 是 C 语言特有的。Perl 以透明方式管理内存。

mblen

在非线程 Perl 中,这与 C 函数 mblen() 相同。在有线程的 Perl 中,如果可用,它会以透明方式(几乎)用更安全的线程 mbrlen(3) 替换 mblen

核心 Perl 不支持宽字节和多字节区域设置,Unicode UTF-8 区域设置除外。此函数结合 "mbtowc""wctomb" 可用于滚动您自己解码/编码其他类型的多字节区域设置。

undef 用作此函数的第一个参数,以获得将 NULL 作为第一个参数传递给 mblen 的效果。这会将任何移位状态重置为其初始值。如果用 mbrlen 替换了,则返回值未定义,因此您永远不应依赖它。

当第一个参数是包含值(PV 字符串或可强制转换为 PV 字符串)的标量时,返回值是该字符串第一个字符所占用的字节数;如果第一个字符是宽 NUL 字符,则为 0;如果出现错误,则为负数。这是基于当前程序底层的区域设置,无论该函数是否从 use locale 范围内的 Perl 代码调用。Perl 不会尝试隐藏 mblenmbrlen 之间 errno 设置的任何差异。在调用它们之前,它会将 errno 设置为 0。

如果可选的第二个参数大于第一个参数字符串的实际长度,则将忽略它。

mbtowc

在非线程 Perl 中,这与 C 函数 mbtowc() 相同。在有线程的 Perl 中,如果可用,它会以透明方式(几乎)用更安全的线程 mbrtowc(3) 替换 mbtowc

核心 Perl 不支持宽字节和多字节区域设置,Unicode UTF-8 区域设置除外。此函数结合 "mblen""wctomb" 可用于滚动您自己解码/编码其他类型的多字节区域设置。

第一个参数是一个标量,在成功时,第二个参数中包含的多字节字符串所表示的宽字符将存储在其中。如果可选的第三个参数大于第二个参数字符串的实际长度,则忽略该参数。

undef用作此函数的第二个参数,以获得将 NULL 作为第二个参数传递给mbtowc的效果。这会忽略第一个参数,并将任何移位状态重置为其初始值。如果用mbrtowc替换了返回值,则该值未定义,因此您永远不应该依赖它。

当第二个参数是一个标量,其中包含一个值(该值是 PV 字符串或可以强制转换为 PV 字符串),则返回值是该字符串的第一个字符所占用的字节数;或者如果第一个字符是宽 NUL 字符,则返回值为 0;或者如果出现错误,则返回值为负数。这基于当前位于程序底层的区域设置,无论该函数是否从use locale作用域内的 Perl 代码中调用。Perl 不会尝试向您的代码隐藏mbtowcmbrtowc之间的errno设置的任何差异。它确实在调用它们之前将errno设置为 0。

memchr

未实现。memchr()是 C 特定的,请参阅perlfunc 中的“index”

memcmp

未实现。memcmp()是 C 特定的,请改用eq,请参阅perlop

memcpy

未实现。memcpy()是 C 特定的,请使用=,请参阅perlop,或参阅perlfunc 中的“substr”

memmove

未实现。memmove()是 C 特定的,请使用=,请参阅perlop,或参阅perlfunc 中的“substr”

memset

未实现。memset()是 C 特定的,请改用x,请参阅perlop

mkdir

这与 Perl 的内置mkdir()函数相同,用于创建目录,请参阅perlfunc 中的“mkdir”

mkfifo

这类似于 C 函数mkfifo(),用于创建 FIFO 特殊文件。

if (mkfifo($path, $mode)) { ....

如果失败,返回undef$mode类似于mkdir()的模式,请参阅perlfunc 中的“mkdir”,但对于mkfifo,您必须指定$mode

mktime

将日期/时间信息转换为日历时间。

概要

mktime(sec, min, hour, mday, mon, year, wday = 0,
       yday = 0, isdst = -1)

月份 (mon)、星期几 (wday) 和一年中的第几天 (yday) 从零开始,,一月是 0,而不是 1;星期日是 0,而不是 1;1 月 1 日是 0,而不是 1。年份 (year) 以自 1900 年以来的年数表示;,1995 年是 95 年;2001 年是 101 年。有关这些和其他参数的详细信息,请查阅系统的 mktime() 手册页。

1995 年 12 月 12 日上午 10:30 的日历时间。

$time_t = POSIX::mktime( 0, 30, 10, 12, 11, 95 );
print "Date = ", POSIX::ctime($time_t);

如果失败,则返回 undef

modf

返回浮点数的整数部分和小数部分。

($fractional, $integral) = POSIX::modf( 3.14 );

另请参阅"round"

NaN

非数字常量

use POSIX qw(NaN);
my $nan = NaN;

另请参阅"nan"/isnan"fpclassify"

nan
my $nan = nan();

返回NaN,非数字 [C99]。在 Perl v5.22 中添加。

返回的 NaN 始终是安静的 NaN,而不是信令的 NaN。

使用参数时,可用于生成带有有效负载的 NaN。参数首先被解释为浮点数,但随后任何小数部分都会被截断(朝零方向),并且该值被解释为无符号整数。此整数的位存储在 NaN 的未使用位中。

结果具有双重性质:它是一个 NaN,但它也包含内部整数。可以使用"getpayload"检索整数。但是,请注意,有效负载不会传播,即使在副本中也不会传播,当然也不会在算术运算中传播。

NaN 中可以容纳多少位取决于所使用的浮点数类型,但在最常见的平台(64 位 IEEE 754 或 x86 80 位长双精度)上,分别有 51 位和 61 位可用。(原本应为 52 位和 62 位,但 NaN 的安静/信号位占用了 1 位。)但是,由于浮点数到整数再到浮点数的转换,请仔细测试是否能取回放入的内容。如果整数只有 32 位宽,则可能不应该依赖于超过 32 位的有效载荷。

“信号”NaN 是否与“安静”NaN 有任何不同,取决于平台。另外请注意,默认 NaN(nan() 无参数)的有效载荷不一定为零,请使用 setpayload 明确设置有效载荷。在某些平台(如 32 位 x86)上(除非使用 80 位长双精度),根本不支持信号位。

另请参阅 "isnan""NaN""setpayload""issignaling"

nearbyint

根据当前舍入模式(请参阅 "fegetround")[C99] 返回最接近参数的整数。在 Perl v5.22 中添加。

nextafter

返回 xy 方向上可表示的下一个浮点数 [C99]。在 Perl v5.22 中添加。

my $nextafter = POSIX::nextafter($x, $y);

类似于 "nexttoward",但可能不太准确。

nexttoward

返回 xy 方向上可表示的下一个浮点数 [C99]。在 Perl v5.22 中添加。

my $nexttoward = POSIX::nexttoward($x, $y);

类似于 "nextafter",但可能更准确。

nice

这类似于 C 函数 nice(),用于更改当前进程的调度优先级。正参数表示更礼貌的进程,负值表示更需要资源的进程。普通(非 root)用户进程只能更改为更礼貌。

如果失败,则返回 undef

offsetof

未实现。offsetof() 是 C 特有的,您可能希望改为查看 perlfunc 中的 "pack"

open

打开文件以供读写。这会返回文件描述符,而不是 Perl 文件句柄。使用 POSIX::close 关闭文件。

以 0666 模式打开只读文件。

$fd = POSIX::open( "foo" );

打开文件以进行读写。

$fd = POSIX::open( "foo", &POSIX::O_RDWR );

打开文件以进行写入,并截断文件。

$fd = POSIX::open(
	"foo", &POSIX::O_WRONLY | &POSIX::O_TRUNC
);

以 0640 模式创建新文件。设置文件以进行写入。

$fd = POSIX::open(
	"foo", &POSIX::O_CREAT | &POSIX::O_WRONLY, 0640
);

如果失败,则返回 undef

另请参阅 perlfunc 中的 "sysopen"

opendir

打开一个目录以供读取。

$dir = POSIX::opendir( "/var" );
@files = POSIX::readdir( $dir );
POSIX::closedir( $dir );

如果失败,则返回 undef

pathconf

检索文件或目录的可配置限制值。

以下代码将确定包含 /var 的文件系统上允许的最长路径名的最大长度。

$path_max = POSIX::pathconf( "/var",
			      &POSIX::_PC_PATH_MAX );

如果失败,则返回 undef

pause

这类似于 C 函数 pause(),它会挂起当前进程的执行,直到收到信号。

如果失败,则返回 undef

perror

这与 C 函数 perror() 相同,它会将指定的消息输出到标准错误流,后跟 ": " 和当前错误字符串。请改用 warn() 函数和 $! 变量,请参阅 perlfunc 中的“warn”perlvar 中的“$ERRNO”

pipe

创建一个进程间通道。这会返回类似于 POSIX::open 返回的文件描述符。

my ($read, $write) = POSIX::pipe();
POSIX::write( $write, "hello", 5 );
POSIX::read( $read, $buf, 5 );

另请参阅 perlfunc 中的“pipe”

pow

计算 $x 乘以 $exponent 的幂。

$ret = POSIX::pow( $x, $exponent );

您还可以使用 ** 运算符,请参阅 perlop

printf

将指定参数格式化并打印到 STDOUT。另请参阅 perlfunc 中的“printf”

putc

未实现。putc() 是 C 语言特有的,请改用 perlfunc 中的“print”

putchar

未实现。putchar() 是 C 语言特有的,请改用 perlfunc 中的“print”

puts

未实现。puts() 是 C 语言特有的,请改用 perlfunc 中的“print”

qsort

未实现。qsort() 是 C 语言特有的,请改用 perlfunc 中的“sort”

raise

向当前进程发送指定的信号。另请参阅 perlfunc 中的“kill”perlvar 中的“$PID” 中的 $$

rand

未实现。rand() 不可移植,请改用 perlfunc 中的“rand”

read

从文件中读取。这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。如果缓冲区 $buf 不足以进行读取,Perl 将对其进行扩展以容纳请求。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
$bytes = POSIX::read( $fd, $buf, 3 );

如果失败,则返回 undef

另请参见 perlfunc 中的“sysread”

readdir

这与 Perl 的用于读取目录项的内置 readdir() 函数相同,请参见 perlfunc 中的“readdir”

realloc

未实现。realloc() 是 C 特有的。Perl 透明地进行内存管理。

remainder

给定 xy,返回 x - n*y 的值,其中 n 是最接近 x/y 的整数 [C99]。在 Perl v5.22 中添加。

my $remainder = POSIX::remainder($x, $y)

另请参见 “remquo”

remove

从文件系统中删除一个名称。对文件调用 perlfunc 中的“unlink”,对目录调用 perlfunc 中的“rmdir”

remquo

“remainder” 类似,但也会返回商的低位 (n) [C99]。在 Perl v5.22 中添加。

(这是一个相当深奥的接口,主要用于实现数值算法。)

rename

这与 Perl 的用于重命名文件的内置 rename() 函数相同,请参见 perlfunc 中的“rename”

rewind

寻找到文件的开头。

rewinddir

这与 Perl 的用于倒带目录项流的内置 rewinddir() 函数相同,请参见 perlfunc 中的“rewinddir”

rint

“lrint” 相同。

rmdir

这与 Perl 的用于移除(空)目录的内置 rmdir() 函数相同,请参见 perlfunc 中的“rmdir”

round

返回最接近参数的整数(但仍然是浮点数)[C99]。在 Perl v5.22 中添加。

另请参见 “ceil”“floor”“lround”“modf”“trunc”

scalbn

返回 x * 2**y [C99]。在 Perl v5.22 中添加。

另请参见 “frexp”“ldexp”

scanf

未实现。scanf() 是 C 特有的,请改用 <> 和正则表达式,请参见 perlre

setgid

设置此进程的实际组标识符和有效组标识符。类似于将一个值分配给 Perl 的内置 $) 变量,请参见 perlvar 中的“$EGID”,不同之处在于后者只会更改实际用户标识符,而 setgid() 只使用一个数字参数,而不是一个用空格分隔的数字列表。

setjmp

未实现。setjmp() 是 C 语言特有的:请改用 eval {},请参阅 perlfunc 中的“eval”

setlocale

警告!在 Perl 5.28 之前或在不支持线程安全区域设置操作的系统上,请勿在 线程 中使用此函数。区域设置将同时在所有其他线程中更改,如果操作系统暂停您的线程并启动另一个线程,则该线程将不会拥有它所期望的区域设置。在某些平台上,如果两个线程几乎同时调用此函数,可能会出现导致段错误的竞争。此警告不适用于非线程化构建,或存在非零 ${^SAFE_LOCALES} 的 perl;即 Perl 5.28 及更高版本编译为区域设置线程安全。

此函数修改并查询程序的基础区域设置。此函数的用户应阅读 perllocale,其中全面讨论了 Perl 区域设置处理,了解这些知识对于正确使用此函数是必要的。其中包含 专门针对此函数的部分。此处讨论仅是 setlocale() 的摘要参考。请注意,除了 "use locale" 的范围内,Perl 本身几乎完全不受区域设置的影响。(例外列在 perllocale 中的“不在“use locale”的范围内” 中,并且 POSIX 模块中的区域设置相关函数始终受当前区域设置的影响。)

以下示例假设

use POSIX qw(setlocale LC_ALL LC_CTYPE);

已发出。

以下将设置传统的 UNIX 系统区域设置行为(第二个参数 "C")。

$loc = setlocale( LC_ALL, "C" );

以下将查询当前 LC_CTYPE 类别。(没有第二个参数表示“查询”。)

$loc = setlocale( LC_CTYPE );

以下将根据区域设置环境变量(第二个参数 "")设置 LC_CTYPE 行为。有关区域设置环境变量的含义,请参阅系统的 setlocale(3) 文档或查阅 perllocale

$loc = setlocale( LC_CTYPE, "" );

以下将设置 LC_COLLATE 行为以匹配阿根廷西班牙语。注意:区域设置的命名和可用性取决于您的操作系统。请参阅 perllocale,了解如何找出系统中可用的区域设置。

$loc = setlocale( LC_COLLATE, "es_AR.ISO8859-1" );
setpayload
use POSIX ':nan_payload';
setpayload($var, $payload);

设置 var 的 NaN 有效负载。已添加到 Perl v5.24 中。

注意:NaN 有效负载 API 基于最新的(截至 2015 年 6 月)建议的 ISO C 接口,但它们尚未成为标准。情况可能会发生变化。

有关 NaN 的更多讨论,请参阅 “nan”

另请参阅 "setpayloadsig""isnan""getpayload""issignaling"

setpayloadsig
use POSIX ':nan_payload';
setpayloadsig($var, $payload);

"setpayload" 类似,但也会使 NaN 发出信号。已添加到 Perl v5.24 中。

根据平台的不同,NaN 的行为可能有所不同,也可能没有不同。

请注意 “setpayload” 中的 API 不稳定性警告。

请注意,由于浮点格式的工作方式,在大多数常见平台上最好避免使用零的信号有效负载,因为它最终可能与 +Inf 相同。

另请参阅 "nan""isnan""getpayload""issignaling"

setpgid

这类似于 C 函数 setpgid(),用于设置当前进程的进程组标识符。

如果失败,则返回 undef

setsid

这与 C 函数 setsid() 相同,用于设置当前进程的会话标识符。

setuid

设置此进程的真实用户标识符和有效用户标识符。类似于为 Perl 的内置变量 $< 分配值,请参阅 "$UID" in perlvar,但后者只会更改真实用户标识符。

sigaction

详细的信号管理。这使用 POSIX::SigAction 对象作为 actionoldaction 参数(oldaction 也可以只是一个哈希引用)。有关详细信息,请参阅系统的 sigaction 手册页,另请参阅 "POSIX::SigRt"

概要

sigaction(signal, action, oldaction = 0)

如果失败,则返回 undefsignal 必须是一个数字(如 SIGHUP),而不是一个字符串(如 "SIGHUP"),尽管 Perl 确实努力理解您。

如果您使用 SA_SIGINFO 标志,则信号处理程序除了第一个参数(信号名称)之外,还将接收第二个参数(哈希引用),其中包含以下键以及以下语义,如 POSIX/SUSv3 所定义

signo       the signal number
errno       the error number
code        if this is zero or less, the signal was sent by
            a user process and the uid and pid make sense,
            otherwise the signal was sent by the kernel

从 Perl v5.24 开始,可以单独导入特定 code 值的常量,或使用 :signal_h_si_code 标记。

以下内容也由 POSIX/SUSv3 定义,但不幸的是没有得到广泛实现

pid         the process id generating the signal
uid         the uid of the process id generating the signal
status      exit value or signal for SIGCHLD
band        band event for SIGPOLL
addr        address of faulting instruction or memory
            reference for SIGILL, SIGFPE, SIGSEGV or SIGBUS

还向处理程序传递了第三个参数,其中包含siginfo结构的原始二进制内容的副本:如果系统有一些非 POSIX 字段,则此第三个参数是unpack()它们的来源。

请注意,并非所有siginfo值都同时有意义(例如,有些仅对某些信号有效),并且并非所有值都从 Perl 角度有意义,您应该查阅系统的sigaction,可能还有siginfo文档。

siglongjmp

未实现。siglongjmp()是 C 语言特有的:请改用"die" in perlfunc

signbit

对正参数返回零,对负参数返回非零 [C99]。在 Perl v5.22 中添加。

sigpending

检查被阻塞和待处理的信号。这使用POSIX::SigSet对象作为sigset参数。有关详细信息,请查阅系统的sigpending手册页。

概要

sigpending(sigset)

如果失败,则返回 undef

sigprocmask

更改和/或检查调用进程的信号掩码。这使用POSIX::SigSet对象作为sigsetoldsigset参数。有关详细信息,请查阅系统的sigprocmask手册页。

概要

sigprocmask(how, sigset, oldsigset = 0)

如果失败,则返回 undef

请注意,如果您使用安全信号,则无法可靠地从其自己的信号处理程序中阻塞或解除阻塞信号。其他信号可以可靠地被阻塞或解除阻塞。

sigsetjmp

未实现。sigsetjmp()是 C 语言特有的:请改用eval {},请参阅"eval" in perlfunc

sigsuspend

安装信号掩码并挂起进程,直到信号到达。这使用POSIX::SigSet对象作为signal_mask参数。有关详细信息,请查阅系统的sigsuspend手册页。

概要

sigsuspend(signal_mask)

如果失败,则返回 undef

sin

这与 Perl 的内置sin()函数相同,用于返回数值参数的正弦,请参阅"sin" in perlfunc。另请参阅Math::Trig

sinh

这与 C 函数 sinh() 相同,用于返回数值参数的双曲正弦。另请参见 Math::Trig

sleep

这在功能上与 Perl 的内置 sleep() 函数相同,用于暂停当前进程的执行一段时间,请参见 perlfunc 中的“sleep”。但是,有一个显著的区别:POSIX::sleep() 返回 未休眠 的秒数,而 CORE::sleep() 返回已休眠的秒数。

sprintf

这类似于 Perl 的内置 sprintf() 函数,用于返回一个字符串,其中参数已按请求格式化,请参见 perlfunc 中的“sprintf”

sqrt

这与 Perl 的内置 sqrt() 函数相同。用于返回数值参数的平方根,请参见 perlfunc 中的“sqrt”

srand

为伪随机数生成器提供种子,请参见 perlfunc 中的“srand”

sscanf

未实现。sscanf() 是 C 特有的,请改用正则表达式,请参见 perlre

stat

这与 Perl 的内置 stat() 函数相同,用于返回有关文件和目录的信息。

strcat

未实现。strcat() 是 C 特有的,请改用 .=,请参见 perlop

strchr

未实现。strchr() 是 C 特有的,请改用 perlfunc 中的“index”

strcmp

未实现。strcmp() 是 C 特有的,请改用 eqcmp,请参见 perlop

strcoll

这与 C 函数 strcoll() 相同,用于整理(比较)使用 strxfrm() 函数转换的字符串。由于 Perl 可以透明地执行此操作,因此并不真正需要,请参见 perllocale

请注意,在 UTF-8 区域设置中,传递给此函数的任何内容都必须为 UTF-8;并且在非 UTF-8 区域设置中,传递的任何内容都不得为 UTF-8 编码。

还要注意,将字符串编码为一种区域设置(例如 ISO-8859-6,阿拉伯语)并根据另一种区域设置(例如 ISO-8859-7,希腊语)进行整理是没有意义的。结果基本上毫无意义。

strcpy

未实现。strcpy() 是 C 特有的,请改用 =,请参见 perlop

strcspn

未实现。strcspn() 是 C 特有的,请改用正则表达式,请参见 perlre

strerror

返回指定 errno 的错误字符串。与 $! 的字符串形式相同,请参阅 perlvar 中的“$ERRNO”

strftime

将日期和时间信息转换为字符串。返回该字符串。

概要

strftime(fmt, sec, min, hour, mday, mon, year,
	 wday = -1, yday = -1, isdst = -1)

月份 (mon)、星期 (wday) 和年日 (yday) 从零开始,,一月为 0,而不是 1;星期日为 0,而不是 1;1 月 1 日为 0,而不是 1。年份 (year) 以自 1900 年以来的年份表示,,1995 年为 95 年;2001 年为 101 年。有关这些参数和其他参数的详细信息,请查阅系统的 strftime() 手册页。

如果您希望您的代码是可移植的,则您的格式 (fmt) 参数应仅使用 ANSI C 标准 (C99,为了安全起见) 定义的转换说明符。这些是 aAbBcdHIjmMpSUwWxXyYZ%。但即便如此,某些转换说明符的结果也是不可移植的。例如,说明符 aAbBcpZ 会根据用户的区域设置而改变,并且如何设置区域设置(区域设置名称)和预期输出都是非标准的。说明符 c 会根据用户的时区设置和操作系统的时区计算规则而改变。Z 说明符出了名的不可移植,因为时区的名称是非标准的。坚持使用数字说明符是最安全的途径。

给定的参数被一致地制作,就好像在调用系统的 strftime() 函数之前调用 mktime() 一样,除了 isdst 值不受影响。

1995 年 12 月 12 日星期二的字符串。

$str = POSIX::strftime( "%A, %B %d, %Y",
			 0, 0, 0, 12, 11, 95, 2 );
print "$str\n";
strlen

未实现。strlen() 是 C 语言特有的,请改用 length(),请参阅 perlfunc 中的“length”

strncat

未实现。strncat() 是 C 语言特有的,请改用 .=,请参阅 perlop

strncmp

未实现。strncmp() 是 C 语言特有的,请改用 eq,请参阅 perlop

strncpy

未实现。strncpy() 是 C 语言特有的,请改用 =,请参阅 perlop

strpbrk

未实现。strpbrk() 是 C 语言特有的,请改用正则表达式,请参阅 perlre

strrchr

未实现。strrchr() 是 C 语言特有的,请改用 perlfunc 中的“rindex”

strspn

未实现。strspn() 是 C 语言特有的,请改用正则表达式,请参阅 perlre

strstr

这与 Perl 的内置 index() 函数相同,请参阅 "index" in perlfunc

strtod

字符串到 double 转换。返回解析后的数字和字符串未解析部分中的字符数。真正符合 POSIX 标准的系统将 $! ($ERRNO) 设置为指示转换错误,因此在调用 strtod 之前清除 $!。但是,非 POSIX 系统可能不会检查溢出,因此永远不会设置 $!

strtod 遵循任何 POSIX setlocale() LC_NUMERIC 设置,无论是否从 use locale 范围内的 Perl 代码调用它。在 Perl 5.28 之前,或在非线程安全环境中运行时,除非确定基础区域设置为 C 或 POSIX,否则不应在多线程应用程序中使用它。这是因为它会更改区域设置,从而同时全局影响所有线程。

要将字符串 $str 解析为浮点数,请使用

$! = 0;
($num, $n_unparsed) = POSIX::strtod($str);

第二个返回项和 $! 可用于检查有效输入

if (($str eq '') || ($n_unparsed != 0) || $!) {
    die "Non-numeric input $str" . ($! ? ": $!\n" : "\n");
}

当在标量上下文中调用时,strtod 返回解析后的数字。

strtok

未实现。strtok() 是 C 语言特有的,请改用正则表达式,请参阅 perlre"split" in perlfunc

strtol

字符串到 (长) 整数转换。返回解析后的数字和字符串未解析部分中的字符数。真正符合 POSIX 标准的系统将 $! ($ERRNO) 设置为指示转换错误,因此在调用 strtol 之前清除 $!。但是,非 POSIX 系统可能不会检查溢出,因此永远不会设置 $!

strtol 应遵循任何 POSIX setlocale() 设置。

要将字符串 $str 解析为某个基数 $base 中的数字,请使用

$! = 0;
($num, $n_unparsed) = POSIX::strtol($str, $base);

基数应为 0 或 2 到 36(包括 2 和 36)。当基数为 0 或省略时,strtol 将使用字符串本身来确定基数:前导的 "0x" 或 "0X" 表示十六进制;前导的 "0" 表示八进制;任何其他前导字符表示十进制。因此,"1234" 被解析为十进制数,"01234" 被解析为八进制数,"0x1234" 被解析为十六进制数。

第二个返回项和 $! 可用于检查有效输入

if (($str eq '') || ($n_unparsed != 0) || !$!) {
    die "Non-numeric input $str" . $! ? ": $!\n" : "\n";
}

当在标量上下文中调用时,strtol 返回解析后的数字。

strtold

类似于 "strtod",但适用于长双精度。仅在系统支持长双精度时定义。

strtoul

字符串到无符号(长)整数转换。strtoul()strtol() 相同,但 strtoul() 仅解析无符号整数。有关详细信息,请参阅 "strtol"

注意:一些供应商提供 strtod()strtol(),但不提供 strtoul()。其他确实提供 strtoul() 的供应商将 "-1" 解析为有效值。

strxfrm

字符串转换。返回转换后的字符串。

$dst = POSIX::strxfrm( $src );

eqcmp 一起用作 "strcoll" 的替代方法。

实际上不需要,因为 Perl 可以透明地执行此操作,请参阅 perllocale

与 libc strxfrm 不同,它允许在输入 $src 中使用 NUL 字符。

将字符串编码为一种区域设置(例如,ISO-8859-6,阿拉伯语)并根据另一种区域设置(例如,ISO-8859-7,希腊语)进行整理是没有意义的。Perl 假设当前 LC_CTYPE 区域设置正确表示 $src 的编码,并忽略 LC_COLLATE 的值。

sysconf

检索系统可配置变量的值。

以下内容将获取机器的时钟速度。

$clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK );

如果失败,则返回 undef

system

这与 Perl 的内置 system() 函数相同,请参阅 "system" in perlfunc

tan

这与 C 函数 tan() 相同,返回数字参数的正切。另请参阅 Math::Trig

tanh

这与 C 函数 tanh() 相同,返回数字参数的双曲正切。另请参阅 Math::Trig

tcdrain

这类似于 C 函数 tcdrain(),用于清空其参数流的输出队列。

如果失败,则返回 undef

tcflow

这类似于 C 函数 tcflow(),用于控制其参数流的流。

如果失败,则返回 undef

tcflush

这类似于 C 函数 tcflush(),用于刷新其参数流的 I/O 缓冲区。

如果失败,则返回 undef

tcgetpgrp

这与 C 函数 tcgetpgrp() 相同,用于返回控制终端的前台进程组的进程组标识符。

tcsendbreak

这类似于 C 函数 tcsendbreak(),用于在其参数流上发送中断。

如果失败,则返回 undef

tcsetpgrp

这类似于 C 函数 tcsetpgrp(),用于设置控制终端的前台进程组的进程组标识符。

如果失败,则返回 undef

tgamma

Gamma 函数 [C99]。在 Perl v5.22 中添加。

另请参见 "lgamma"

time

这与 Perl 的内置 time() 函数相同,用于返回自纪元(系统中的任何纪元)以来的秒数,请参见 perlfunc 中的“time”

times

times() 函数返回自过去某个时间点(例如系统启动)以来的经过实时、此进程的用户和系统时间,以及子进程使用的用户和系统时间。所有时间均以时钟滴答数返回。

    ($realtime, $user, $system, $cuser, $csystem)
	= POSIX::times();

注意:Perl 的内置 times() 函数返回四个值,以秒为单位。

tmpfile

未实现。请改用 IO::File::new_tmpfile() 方法,或参见 File::Temp

tmpnam

出于安全原因(可能在您系统的 C 库 tmpnam() 函数文档中详细说明),自 Perl v5.26 起,此接口不再可用;请改用 File::Temp

tolower

此函数已从 Perl v5.26 中移除。这与 C 函数相同,但它可以应用于单个字符或整个字符串,并且当前的操作方式始终将区域设置为“C”。考虑使用 lc() 函数,请参见 perlfunc 中的“lc”,请参见 perlfunc 中的“lc”,或双引号字符串中的等效 \L 运算符。

toupper

此函数已从 Perl v5.26 中移除。这类似于 C 函数,但它可以应用于单个字符或整个字符串,并且当前的操作方式始终将区域设置为“C”。考虑使用 uc() 函数,请参见 perlfunc 中的“uc”,或双引号字符串中的等效 \U 运算符。

trunc

从参数中返回向零舍入的整数 [C99]。Perl v5.22 中添加。

另请参见 "ceil""floor""round"

ttyname

这与 C 函数 ttyname() 相同,用于返回当前终端的名称。

tzname

tzname 变量中检索时间转换信息。

POSIX::tzset();
($std, $dst) = POSIX::tzname();
tzset

这与 C 函数 tzset() 相同,用于根据环境变量 TZ 设置当前时区,由 ctime()localtime()mktime()strftime() 函数使用。

umask

这与 Perl 的内置 umask() 函数相同,用于设置(和查询)文件创建权限掩码,请参见 perlfunc 中的“umask”

uname

获取当前操作系统的名称。

($sysname, $nodename, $release, $version, $machine)
	= POSIX::uname();

请注意,各个字段的实际含义并没有很好地标准化,不要指望有很大的可移植性。$sysname 可能指操作系统名称,$nodename 可能指主机名称,$release 可能指操作系统的(主要)发行版本号,$version 可能指操作系统的(次要)发行版本号,$machine 可能指硬件标识符。也许。

ungetc

未实现。请改用方法 IO::Handle::ungetc()

这与 Perl 的内置 unlink() 函数相同,用于删除文件,请参见 perlfunc 中的“unlink”

utime

这与 Perl 的内置 utime() 函数相同,用于更改文件和目录的时间戳,请参见 perlfunc 中的“utime”

vfprintf

未实现。vfprintf() 是 C 特定的,请改用 perlfunc 中的“printf”

vprintf

未实现。vprintf() 是 C 特定的,请改用 perlfunc 中的“printf”

vsprintf

未实现。vsprintf() 是 C 特定的,请改用 perlfunc 中的“sprintf”

wait

这与 Perl 的内置 wait() 函数相同,请参阅 perlfunc 中的“wait”

waitpid

等待子进程更改状态。这与 Perl 的内置 waitpid() 函数相同,请参阅 perlfunc 中的“waitpid”

$pid = POSIX::waitpid( -1, POSIX::WNOHANG );
print "status = ", ($? / 256), "\n";

请参阅 "mblen"

wctomb

在非线程 Perl 上,这与 C 函数 wctomb() 相同。在多线程 Perl 上,如果可用,它会透明地(几乎)用更安全的线程 wcrtomb(3) 替换 wctomb

核心 Perl 不支持宽字节和多字节区域设置,Unicode UTF-8 区域设置除外。此函数结合 "mblen""mbtowc" 可用于滚动您自己的其他类型多字节区域设置的解码/编码。

undef 用作此函数的第一个参数,以获得将 NULL 作为第一个参数传递给 wctomb 的效果。这将忽略第二个参数,并将任何移位状态重置为其初始值。如果替换了 wcrtomb,则返回值未定义,因此您永远不应该依赖它。

当第一个参数是标量时,标量第二个参数中包含的代码点将转换为多字节字符串并存储到第一个参数标量中。这基于当前作为程序基础的区域设置,无论该函数是否从 use locale 范围内的 Perl 代码调用。返回值是存储的字节数;或者如果代码点在当前区域设置中不可表示,则为负数。Perl 不会尝试向您的代码隐藏 wctombwcrtomb 之间 errno 设置的任何差异。它确实在调用它们之前将 errno 设置为 0。

write

写入文件。这使用文件描述符,例如通过调用 POSIX::open 获得的文件描述符。

$fd = POSIX::open( "foo", &POSIX::O_WRONLY );
$buf = "hello";
$bytes = POSIX::write( $fd, $buf, 5 );

如果失败,则返回 undef

另请参阅 perlfunc 中的“syswrite”

POSIX::SigAction

new

创建一个新的 POSIX::SigAction 对象,它对应于 C struct sigaction。当不再需要此对象时,它将自动销毁。第一个参数是处理程序,一个子引用。第二个参数是 POSIX::SigSet 对象,它默认为空集。第三个参数包含 sa_flags,它默认为 0。

$sigset = POSIX::SigSet->new(SIGINT, SIGQUIT);
$sigaction = POSIX::SigAction->new(
		\&handler, $sigset, &POSIX::SA_NOCLDSTOP
	     );

POSIX::SigAction 对象旨在与 POSIX::sigaction() 函数一起使用。

handler
mask
flags

访问器函数,用于获取/设置 SigAction 对象的值。

$sigset = $sigaction->mask;
$sigaction->flags(&POSIX::SA_RESTART);
safe

SigAction 对象的“安全信号”标志的访问器函数;有关安全(又称“延迟”)信号的常规信息,请参阅 perlipc。如果您希望安全地处理信号,请使用此访问器在 POSIX::SigAction 对象中设置“safe”标志

$sigaction->safe(1);

您还可以检查作为第三个参数提供给 POSIX::sigaction() 时填写的输出操作对象上的“safe”标志

sigaction(SIGINT, $new_action, $old_action);
if ($old_action->safe) {
    # previous SIGINT handler used safe signals
}

POSIX::SigRt

%SIGRT

POSIX 实时信号处理程序的哈希。它是标准 %SIG 的扩展,$POSIX::SIGRT{SIGRTMIN} 大致等效于 $SIG{SIGRTMIN},但正确的 POSIX 移动(见下文)是用 POSIX::SigSetPOSIX::sigaction 而不是访问 %SIG

您可以设置 %POSIX::SIGRT 元素以设置 POSIX 实时信号处理程序,对元素使用 deleteexists,以及对 %POSIX::SIGRT 使用 scalar 以找出有多少个 POSIX 实时信号可用 (SIGRTMAX - SIGRTMIN + 1SIGRTMAX 是有效的 POSIX 实时信号)。

设置 %SIGRT 元素等效于调用此项

sub new {
  my ($rtsig, $handler, $flags) = @_;
  my $sigset = POSIX::SigSet($rtsig);
  my $sigact = POSIX::SigAction->new($handler,$sigset,$flags);
  sigaction($rtsig, $sigact);
}

标志默认为零,如果您想要不同的标志,您可以对 $POSIX::SigRt::SIGACTION_FLAGS 使用 local,或者您可以从 POSIX::SigRt 派生并定义您自己的 new()%SIGRT 的关联哈希 STORE 方法调用 new($rtsig, $handler, $SIGACTION_FLAGS),其中 $rtsig 范围从零到 SIGRTMAX - SIGRTMIN + 1)

与任何信号一样,您可以使用 sigaction($rtsig, undef, $oa) 检索已安装的信号处理程序(或更确切地说,是信号操作)。

注意: POSIX 实时信号是否真的在您的系统中运行,或者 Perl 是否已编译为与它们一起运行,不在此讨论范围内。

SIGRTMIN

返回可用的最小 POSIX 实时信号号,如果没有可用的 POSIX 实时信号,则返回 undef

SIGRTMAX

返回可用的最大 POSIX 实时信号号,如果没有可用的 POSIX 实时信号,则返回 undef

POSIX::SigSet

new

创建一个新的 SigSet 对象。当不再需要此对象时,它将自动销毁。可以提供参数来初始化该集合。

创建一个空集合。

$sigset = POSIX::SigSet->new;

创建一个包含 SIGUSR1 的集合。

$sigset = POSIX::SigSet->new( &POSIX::SIGUSR1 );

如果无法将任何提供的信号添加到集合中,则抛出错误。

addset

将信号添加到 SigSet 对象。

$sigset->addset( &POSIX::SIGUSR2 );

如果失败,则返回 undef

delset

从 SigSet 对象中移除信号。

$sigset->delset( &POSIX::SIGUSR2 );

如果失败,则返回 undef

emptyset

初始化 SigSet 对象为空。

$sigset->emptyset();

如果失败,则返回 undef

fillset

初始化 SigSet 对象以包含所有信号。

$sigset->fillset();

如果失败,则返回 undef

ismember

测试 SigSet 对象以查看它是否包含特定信号。

if( $sigset->ismember( &POSIX::SIGUSR1 ) ){
	print "contains SIGUSR1\n";
}

POSIX::Termios

new

创建一个新的 Termios 对象。当不再需要此对象时,它将自动销毁。Termios 对象对应于 termios C 结构。new() 分配一个新的,getattr() 从文件描述符中填充它,而 setattr() 将文件描述符的参数设置为与 Termios 的内容匹配。

$termios = POSIX::Termios->new;
getattr

获取终端控制属性。

获取 stdin 的属性。

$termios->getattr( 0 ) # Recommended for clarity.
$termios->getattr()

获取 stdout 的属性。

$termios->getattr( 1 )

如果失败,则返回 undef

getcc

termios 对象的 c_cc 字段中检索值。c_cc 字段是一个数组,因此必须指定一个索引。

$c_cc[1] = $termios->getcc(1);
getcflag

检索 termios 对象的 c_cflag 字段。

$c_cflag = $termios->getcflag;
getiflag

检索 termios 对象的 c_iflag 字段。

$c_iflag = $termios->getiflag;
getispeed

检索输入波特率。

$ispeed = $termios->getispeed;
getlflag

检索 termios 对象的 c_lflag 字段。

$c_lflag = $termios->getlflag;
getoflag

检索 termios 对象的 c_oflag 字段。

$c_oflag = $termios->getoflag;
getospeed

检索输出波特率。

$ospeed = $termios->getospeed;
setattr

设置终端控制属性。

立即为 stdout 设置属性。

$termios->setattr( 1, &POSIX::TCSANOW );

如果失败,则返回 undef

setcc

termios 对象的 c_cc 字段中设置一个值。c_cc 字段是一个数组,因此必须指定一个索引。

$termios->setcc( &POSIX::VEOF, 1 );
setcflag

设置 termios 对象的 c_cflag 字段。

$termios->setcflag( $c_cflag | &POSIX::CLOCAL );
setiflag

设置 termios 对象的 c_iflag 字段。

$termios->setiflag( $c_iflag | &POSIX::BRKINT );
setispeed

设置输入波特率。

$termios->setispeed( &POSIX::B9600 );

如果失败,则返回 undef

setlflag

设置 termios 对象的 c_lflag 字段。

$termios->setlflag( $c_lflag | &POSIX::ECHO );
setoflag

设置 termios 对象的 c_oflag 字段。

$termios->setoflag( $c_oflag | &POSIX::OPOST );
setospeed

设置输出波特率。

$termios->setospeed( &POSIX::B9600 );

如果失败,则返回 undef

波特率值

B38400 B75 B200 B134 B300 B1800 B150 B0 B19200 B1200 B9600 B600 B4800 B50 B2400 B110

终端接口值

TCSADRAIN TCSANOW TCOON TCIOFLUSH TCOFLUSH TCION TCIFLUSH TCSAFLUSH TCIOFF TCOOFF

c_cc 字段值

VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN VTIME NCCS

c_cflag 字段值

CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD

c_iflag 字段值

BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF IXON PARMRK

c_lflag 字段值

ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP

c_oflag 字段值

OPOST

路径名常量

常量

_PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX _PC_PIPE_BUF _PC_VDISABLE

POSIX 常量

常量

_POSIX_ARG_MAX _POSIX_CHILD_MAX _POSIX_CHOWN_RESTRICTED _POSIX_JOB_CONTROL _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_NO_TRUNC _POSIX_OPEN_MAX _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SAVED_IDS _POSIX_SSIZE_MAX _POSIX_STREAM_MAX _POSIX_TZNAME_MAX _POSIX_VDISABLE _POSIX_VERSION

资源常量

通过 :sys_resource_h 标记导入。

常量

在 Perl v5.28 中添加

PRIO_PROCESS PRIO_PGRP PRIO_USER

系统配置

常量

_SC_ARG_MAX _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION

错误号

常量

E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP ENOTTY ENXIO EOPNOTSUPP EOTHER EOVERFLOW EOWNERDEAD EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV

FCNTL

常量

FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_OK F_RDLCK F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC O_WRONLY

FLOAT

常量

DBL_DIG DBL_EPSILON DBL_MANT_DIG DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP FLT_DIG FLT_EPSILON FLT_MANT_DIG FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_ROUNDS LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP

浮点环境

常量

FE_DOWNWARD FE_TONEAREST FE_TOWARDZERO FE_UPWARD 在支持它们的系统上。

限制

常量

ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX

区域设置

常量

LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES 在支持它们的系统上。

数学

常量

HUGE_VAL

在 Perl v5.22 中添加

FP_ILOGB0 FP_ILOGBNAN FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO INFINITY NAN Inf NaN M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 M_LOG10E M_LOG2E M_PI M_PI_2 M_PI_4 M_SQRT1_2 M_SQRT2 在支持 C99 的系统上。

信号

常量

SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK

在 Perl v5.24 中添加

ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG ILL_COPROC ILL_BADSTK FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND FPE_FLTRES FPE_FLTINV FPE_FLTSUB SEGV_MAPERR SEGV_ACCERR BUS_ADRALN BUS_ADRERR BUS_OBJERR TRAP_BRKPT TRAP_TRACE CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ

STAT

常量

S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR

S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISLNK S_ISREG S_ISSOCK

STDLIB

常量

EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX RAND_MAX

STDIO

常量

BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid TMP_MAX

TIME

常量

CLK_TCK CLOCKS_PER_SEC

UNISTD

常量

R_OK SEEK_CUR SEEK_END SEEK_SET STDIN_FILENO STDOUT_FILENO STDERR_FILENO W_OK X_OK

WAIT

常量

WNOHANG WUNTRACED

WNOHANG

不要暂停调用进程,直到子进程更改状态,而是立即返回。

WUNTRACED

捕获已停止的子进程。

WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG

WIFEXITED

WIFEXITED(${^CHILD_ERROR_NATIVE}) 如果子进程正常退出(exit() 或通过退出 main()),则返回 true

WEXITSTATUS

WEXITSTATUS(${^CHILD_ERROR_NATIVE}) 返回子进程的正常退出状态(仅当 WIFEXITED(${^CHILD_ERROR_NATIVE}) 为 true 时才有意义)

WIFSIGNALED

WIFSIGNALED(${^CHILD_ERROR_NATIVE}) 如果子进程因信号而终止,则返回 true

WTERMSIG

WTERMSIG(${^CHILD_ERROR_NATIVE}) 返回子进程终止的信号(仅当 WIFSIGNALED(${^CHILD_ERROR_NATIVE}) 为 true 时才有意义)

WIFSTOPPED

WIFSTOPPED(${^CHILD_ERROR_NATIVE}) 如果子进程当前已停止,则返回 true(仅当您向 waitpid() 指定了 WUNTRACED 标志时才会发生)

WSTOPSIG

WSTOPSIG(${^CHILD_ERROR_NATIVE}) 返回子进程停止的信号(仅当 WIFSTOPPED(${^CHILD_ERROR_NATIVE}) 为 true 时才有意义)

WINSOCK

(仅限 Windows。)

常量

在 Perl v5.24 中添加

WSAEINTR WSAEBADF WSAEACCES WSAEFAULT WSAEINVAL WSAEMFILE WSAEWOULDBLOCK WSAEINPROGRESS WSAEALREADY WSAENOTSOCK WSAEDESTADDRREQ WSAEMSGSIZE WSAEPROTOTYPE WSAENOPROTOOPT WSAEPROTONOSUPPORT WSAESOCKTNOSUPPORT WSAEOPNOTSUPP WSAEPFNOSUPPORT WSAEAFNOSUPPORT WSAEADDRINUSE WSAEADDRNOTAVAIL WSAENETDOWN WSAENETUNREACH WSAENETRESET WSAECONNABORTED WSAECONNRESET WSAENOBUFS WSAEISCONN WSAENOTCONN WSAESHUTDOWN WSAETOOMANYREFS WSAETIMEDOUT WSAECONNREFUSED WSAELOOP WSAENAMETOOLONG WSAEHOSTDOWN WSAEHOSTUNREACH WSAENOTEMPTY WSAEPROCLIM WSAEUSERS WSAEDQUOT WSAESTALE WSAEREMOTE WSAEDISCON WSAENOMORE WSAECANCELLED WSAEINVALIDPROCTABLE WSAEINVALIDPROVIDER WSAEPROVIDERFAILEDINIT WSAEREFUSED