PyObject *PyOS_FSPath(PyObject *path)
返回值:新的引用。 属于 稳定 ABI 自 3.6 版开始.
返回 path 在文件系统中的表示形式。 如果该对象是一个 str 或 bytes 对象,则返回一个新的 strong reference。 如果对象实现了 os.PathLike 接口,则只要它是一个 str 或 bytes 对象就将返回 __fspath__()。 在其他情况下将引发 TypeError 并返回 NULL。
在 3.6 版本加入.
int Py_FdIsInteractive(FILE *fp, const char *filename)
如果名称为 filename 的标准Return true (nonzero) if the standard I/O 文件 fp 被确认为可交互的则返回真(非零)值。 所有 isatty(fileno(fp)) 为真值的文件都属于这种情况。 如果 PyConfig.interactive 为非零值,此函数在 filename 指针为 NULL 或者其名称等于字符串 '<stdin>' 或 '???' 之一时也将返回真值。
此函数不可在 Python 被初始化之前调用。
void PyOS_BeforeFork()
属于 稳定 ABI on platforms with fork() 自 3.7 版开始.
在进程分叉之前准备某些内部状态的函数。 此函数应当在调用 fork() 或者任何类似的克隆当前进程的函数之前被调用。 只适用于定义了 fork() 的系统。
警告 C fork() 调用应当只在 "main" 线程 (位于 "main" 解释器) 中进行。 对于 PyOS_BeforeFork() 来说也是如此。
在 3.7 版本加入.
void PyOS_AfterFork_Parent()
属于 稳定 ABI on platforms with fork() 自 3.7 版开始.
在进程分叉之后更新某些内部状态的函数。 此函数应当在调用 fork() 或任何类似的克隆当前进程的函数之后被调用,无论进程克隆是否成功。 只适用于定义了 fork() 的系统。
警告 C fork() 调用应当只在 "main" 线程 (位于 "main" 解释器) 中进行。 对于 PyOS_AfterFork_Parent() 来说也是如此。
在 3.7 版本加入.
void PyOS_AfterFork_Child()
属于 稳定 ABI on platforms with fork() 自 3.7 版开始.
在进程分叉之后更新内部解释器状态的函数。 此函数必须在调用 fork() 或任何类似的克隆当前进程的函数之后在子进程中被调用,如果该进程有机会回调到 Python 解释器的话。 只适用于定义了 fork() 的系统。
警告 C fork() 调用应当只在 "main" 线程 (位于 "main" 解释器) 中进行。 对于 PyOS_AfterFork_Child() 来说也是如此。
在 3.7 版本加入.
参见 os.register_at_fork() 允许注册可被 PyOS_BeforeFork(), PyOS_AfterFork_Parent() 和 PyOS_AfterFork_Child() 调用的自定义 Python 函数。
void PyOS_AfterFork()
属于 稳定 ABI on platforms with fork().
在进程分叉之后更新某些内部状态的函数;如果要继续使用 Python 解释器则此函数应当在新进程中被调用。 如果已将一个新的可执行文件载入到新进程中,则不需要调用此函数。
自 3.7 版本弃用: 此函数已被 PyOS_AfterFork_Child() 取代。
int PyOS_CheckStack()
属于 稳定 ABI on platforms with USE_STACKCHECK 自 3.7 版开始.
当解释器耗尽栈空间时返回真值。 这是一个可靠的检查,但仅在已定义 USE_STACKCHECK 时可用(目前是在使用 Microsoft Visual C++ 编译器的特定 Windows 版本上)。 USE_STACKCHECK 将被自动定义;你绝不应该在你自己的代码中改变此定义。will be defined automatically; you should never change the definition in your own code.
PyOS_sighandler_t PyOS_getsig(int i)
属于 稳定 ABI.
返回信号 i 的当前信号处理句柄。 这是一个对 sigaction() 或 signal() 的简单包装器。 请勿直接调用这两个函数! PyOS_sighandler_t 是对应于 void (*)(int) 的类型定义别名。
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
属于 稳定 ABI.
将信号 i 的信号处理句柄设为 h;返回旧的信号处理句柄。 这是一个对 sigaction() 或 signal() 的简单包装器。 请勿直接调用这两个函数! PyOS_sighandler_t 是对应于 void (*)(int) 的类型定义别名。
wchar_t *Py_DecodeLocale(const char *arg, size_t *size)
属于 稳定 ABI 自 3.7 版开始.
警告 此函数不应当被直接调用:请使用 PyConfig API 以及可确保 对 Python 进行预初始化 的 PyConfig_SetBytesString() 函数。
此函数不可在This function must not be called before 对 Python 进行预初始化 之前被调用以便正确地配置 LC_CTYPE 语言区域:请参阅 Py_PreInitialize() 函数。
使用 filesystem encoding and error handler 来解码一个字节串。 如果错误处理句柄为 surrogateescape 错误处理句柄,则不可解码的字节将被解码为 U+DC80..U+DCFF 范围内的字符;而如果一个字节序列可被解码为代理字符,则其中的字节会使用 surrogateescape 错误处理句柄来转义而不是解码它们。
返回一个指向新分配的由宽字符组成的字符串的指针,使用 PyMem_RawFree() 来释放内存。 如果 size 不为 NULL,则将排除了 null 字符的宽字符数量写入到 *size
在解码错误或内存分配错误时返回 NULL。 如果 size 不为 NULL,则 *size 将在内存错误时设为 (size_t)-1 或在解码错误时设为 (size_t)-2。
filesystem encoding and error handler 是由 PyConfig_Read() 来选择的: 参见 PyConfig 的 filesystem_encoding 和 filesystem_errors 等成员。
解码错误绝对不应当发生,除非 C 库有程序缺陷。
请使用 Py_EncodeLocale() 函数来将字符串编码回字节串。
参见 PyUnicode_DecodeFSDefaultAndSize() 和 PyUnicode_DecodeLocaleAndSize() 函数。
在 3.5 版本加入.
在 3.7 版本发生变更: 现在此函数在 Python UTF-8 模式 下将使用 UTF-8 编码格式。
在 3.8 版本发生变更: 现在如果在 Windows 上 PyPreConfig.legacy_windows_fs_encoding 为零则此函数将使用 UTF-8 编码格式;
char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
属于 稳定 ABI 自 3.7 版开始.
将一个由宽字符组成的字符串编码为 filesystem encoding and error handler。 如果错误处理句柄为 surrogateescape 错误处理句柄,则在 U+DC80..U+DCFF 范围内的代理字符会被转换为字节值 0x80..0xFF。
返回一个指向新分配的字节串的指针,使用 PyMem_Free() 来释放内存。 当发生编码错误或内存分配错误时返回 NULL。
如果 error_pos 不为 NULL,则成功时会将 *error_pos 设为 (size_t)-1,或是在发生编码错误时设为无效字符的索引号。
filesystem encoding and error handler 是由 PyConfig_Read() 来选择的: 参见 PyConfig 的 filesystem_encoding 和 filesystem_errors 等成员。
请使用 Py_DecodeLocale() 函数来将字节串解码回由宽字符组成的字符串。
警告 此函数不可在This function must not be called before 对 Python 进行预初始化 之前被调用以便正确地配置 LC_CTYPE 语言区域:请参阅 Py_PreInitialize() 函数。
参见 PyUnicode_EncodeFSDefault() 和 PyUnicode_EncodeLocale() 函数。
在 3.5 版本加入.
在 3.7 版本发生变更: 现在此函数在 Python UTF-8 模式 下将使用 UTF-8 编码格式。
在 3.8 版本发生变更: 现在如果在 Windows 上 PyPreConfig.legacy_windows_fs_encoding 为零则此函数将使用 UTF-8 编码格式。 |