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 perlfunc 和 Carp 模块来实现类似的功能。
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
x
和 y
的最大值,但当其中任何一个为 NaN
时,返回另一个 [C99]。在 Perl v5.22 中添加。
my $max = POSIX::fmax($x, $y);
fmin
x
和 y
的最小值,但当其中任何一个为 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
(还有 isgreaterequal
、isless
、islessequal
、islessgreater
、isunordered
)
处理 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"。
link
这与 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_precedes
和int_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 中添加。
由于疏忽,目前未默认导出此项,或作为: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 不会尝试隐藏 mblen
和 mbrlen
之间 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 不会尝试向您的代码隐藏mbtowc
和mbrtowc
之间的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
返回 x
在 y
方向上可表示的下一个浮点数 [C99]。在 Perl v5.22 中添加。
my $nextafter = POSIX::nextafter($x, $y);
类似于 "nexttoward",但可能不太准确。
nexttoward
返回 x
在 y
方向上可表示的下一个浮点数 [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
给定 x
和 y
,返回 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 中添加。
scalbn
返回 x * 2**y
[C99]。在 Perl v5.22 中添加。
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
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
对象作为 action
和 oldaction
参数(oldaction 也可以只是一个哈希引用)。有关详细信息,请参阅系统的 sigaction
手册页,另请参阅 "POSIX::SigRt"。
概要
sigaction(signal, action, oldaction = 0)
如果失败,则返回 undef
。signal
必须是一个数字(如 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
对象作为sigset
和oldsigset
参数。有关详细信息,请查阅系统的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 特有的,请改用 eq
或 cmp
,请参见 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 );
与 eq
或 cmp
一起用作 "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 中添加。
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()
。
unlink
这与 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 不会尝试向您的代码隐藏 wctomb
和 wcrtomb
之间 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::SigSet
和 POSIX::sigaction
而不是访问 %SIG
。
您可以设置 %POSIX::SIGRT
元素以设置 POSIX 实时信号处理程序,对元素使用 delete
和 exists
,以及对 %POSIX::SIGRT
使用 scalar
以找出有多少个 POSIX 实时信号可用 (SIGRTMAX - SIGRTMIN + 1
,SIGRTMAX
是有效的 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_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
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
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
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
EXIT_FAILURE
EXIT_SUCCESS
MB_CUR_MAX
RAND_MAX
BUFSIZ
EOF
FILENAME_MAX
L_ctermid
L_cuserid
TMP_MAX
CLK_TCK
CLOCKS_PER_SEC
R_OK
SEEK_CUR
SEEK_END
SEEK_SET
STDIN_FILENO
STDOUT_FILENO
STDERR_FILENO
W_OK
X_OK
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 时才有意义)
(仅限 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