osUtil

  • int Py_FdIsInteractive(FILE *fp ,const char filename *)

    • 如果名称为* filename 的标准 I/O 文件 fp 被认为是交互式的,则返回 true(非零)。 isatty(fileno(fp))为 true 的文件就是这种情况。如果全局标志Py_InteractiveFlag为 true,则如果 filename 指针为 NULL *或名称等于字符串'<stdin>''???'之一,则此函数也返回 true。
  • 无效PyOS_AfterFork()

    • 在流程派生后更新某些内部状态的Function;如果将 continue 使用 Python 解释器,则应在新过程中调用此方法。如果将新的可执行文件加载到新进程中,则不需要调用此函数。
  • int PyOS_CheckStack()

    • 当解释器的堆栈空间不足时,返回 true。这是可靠的检查,但仅在定义USE_STACKCHECK时可用(当前在 Windows 上使用 Microsoft Visual C 编译器)。 USE_STACKCHECK将被自动定义;您永远不要在自己的代码中更改定义。
  • PyOS_sighandler_t PyOS_getsig(int * i *)

    • 返回 signal* i *的当前 signal 处理程序。这是围绕sigaction()signal()的薄包装。不要直接调用这些Function! PyOS_sighandler_tvoid (*)(int)的 typedef 别名。
  • PyOS_sighandler_t PyOS_setsig(int * i *,PyOS_sighandler_t * h *)

    • 将 signal* i 的 signal 处理程序设置为 h *;返回旧的 signal 处理程序。这是围绕sigaction()signal()的薄包装。不要直接调用这些Function! PyOS_sighandler_tvoid (*)(int)的 typedef 别名。

System Functions

这些是 Util 函数,这些函数使sys模块的Function可用于 C 代码。它们都与当前解释器线程的sys模块的字典一起工作,该字典包含在内部线程状态结构中。

  • PyObject * PySys_GetObject(char ** name *)
    • *返回值:借用参考。

sys模块返回对象* name ;如果不存在,则返回 NULL *,而不设置异常。

  • FILE * PySys_GetFile(char *name ,FILE def *)

    • 返回与sys模块中的对象* name 关联的FILE*;如果 name 不在模块中或与FILE*不关联,则返回 def *。
  • int PySys_SetObject(char *name PyObject v *)

    • 除非** v NULL ,否则将sys模块中的 name 设置为 v ,在这种情况下,将从 sys 模块中删除 name *。成功返回0,错误返回-1
  • 无效PySys_ResetWarnOptions()

  • 无效PySys_AddWarnOption(char ** s *)

  • 无效PySys_SetPath(char ** path *)

    • sys.path设置为在* path *中找到的路径的列表对象,该对象应该是用平台的搜索路径定界符(Unix 上为:,Windows 上为;)分隔的路径的列表。
  • 无效PySys_WriteStdout(const char ** format *,...)

    • 将* format *描述的输出字符串写入sys.stdout。即使发生截断,也不会引发异常(请参见下文)。
  • format *应该将格式化输出字符串的总大小限制为 1000 字节或更小-1000 字节后,输出字符串将被截断。特别是,这意味着不应出现任何不受限制的“%s”格式;这些值应使用“%。 s”进行限制,其中是计算得出的十进制数,以使加上其他格式化文本的最大大小不超过 1000 个字节。还要注意“%f”,它可以打印数百位的非常大的数字。

如果出现问题,或者未设置sys.stdout,则格式化的消息将被写入实数(C 级)* stdout *。

  • 无效PySys_WriteStderr(const char ** format *,...)

Process Control

  • 无效Py_FatalError(const char ** message *)
    • 打印致命错误消息并终止进程。不执行清理。仅当检测到可能会 continue 使用 Python 解释器的危险的条件时,才应调用此函数。例如,当对象 Management 似乎已损坏时。在 Unix 上,将调用标准 C 库函数abort(),它将try生成core文件。
  • 无效Py_Exit(int 状态)
    • 退出当前进程。这将调用Py_Finalize(),然后调用标准 C 库函数exit(status)
  • int Py_AtExit(void(** func *)())
    • 注册一个由Py_Finalize()调用的清理函数。清理函数将不带任何参数调用,并且不返回任何值。最多可以注册 32 个清除Function。注册成功后,Py_AtExit()返回0;如果失败,则返回-1。最后注册的清除Function首先被调用。每个清理函数最多被调用一次。由于 Python 的内部完成工作将在 cleanup 函数之前完成,因此* func *不应调用 Python API。