Test2::Util - Test2 及其关联工具使用的工具。
Test2 及其关联工具使用的工具集合。
所有导出都是可选的。您必须指定要导入的子例程。
评估代码块,返回成功或失败以及错误消息。此代码保护 $@ 和 $!,它们将在运行结束时恢复。此代码还会暂时阻止 $SIG{DIE} 处理程序。
与 try 类似,但它不会捕获异常。此处的目的是保护 $@ 和 $! 不被更改。只要运行成功,$@ 和 $! 将恢复到运行前的状态。如果运行失败,$! 仍将恢复,但 $@ 将包含正在抛出的异常。
如果此系统能够真正或伪造克隆,则为 True。
如果系统能够真正克隆,则为 True。对于克隆被模拟的系统,此项将为 false。
如果此系统能够使用线程,则为 True。
如果启用线程,则返回 true;如果未启用线程,则返回 false。
如果启用线程,这将返回当前线程的 ID;否则,返回 0。
将包名称转换为文件名。
获取 IPC 分隔符。目前,这始终为字符串 '~'
。
生成唯一 ID(不是 UUID)。这通常是进程 ID、线程 ID、时间和增量整数,所有这些都与 ipc_separator()
连接在一起。
这些 ID 对于大多数目的来说都是足够唯一的。要生成相同的 ID,您必须让 2 个具有相同 PID 的进程在增量整数的相同当前状态下同时生成 ID。在多台机器上发生这种情况完全合理,但在一台机器上不太可能发生。
如果进程生成 ID,调用 exec,并在 exec 后再次执行,并且所有这些操作都在不到一秒的时间内完成,则可能无法唯一。如果系统进程 ID 在不到一秒的时间内循环,从而允许使用此生成器运行的 2 个不同程序在不到一秒的时间内使用相同的 PID,也可能发生这种情况。这两种情况都极不可能发生。如果您需要全局唯一 ID 或在这些条件下唯一的 ID,请查看 Data::UUID。
重命名文件,这将封装 `rename()`,使其在尝试重命名最近更改的文件时跨平台更可靠。
取消链接文件,这将封装 `unlink()`,使其在尝试取消链接最近更改的文件时跨平台更可靠。
使用多个屏蔽信号完成操作,它们将在最后取消屏蔽,允许处理任何被拦截的信号。
这主要用于需要使多个操作原子化(无论如何针对某些信号)时。
被拦截的信号
使用较新的 gcc 版本编译时,Perl 5.10.0 会出现一个错误。每当启动一个新线程时,此错误都会导致段错误。Test2 将尝试检测到这一点,并注意在检测到时系统无法 fork。
Devel::Cover 不支持线程。如果在首次运行检查之前加载了 Devel::Cover,CAN_THREAD 将返回 false。
Test2 的源代码存储库可以在 http://github.com/Test-More/test-more/ 中找到。
版权所有 2020 Chad Granum <[email protected]>。
本程序是免费软件;您可以在与 Perl 本身相同的条款下重新分发和/或修改它。
请参阅 https://dev.perl5.cn/licenses/