操作系统实用程序¶
-
PyObject *PyOS_FSPath(PyObject *path)¶
- Return value: New reference.
返回的文件系统表示形式 path . 如果对象是
str或bytes对象,则其引用计数递增。如果对象实现os.PathLike接口,然后__fspath__()只要是一个str或bytes对象。否则TypeError被抚养和NULL返回。3.6 新版功能.
-
int Py_FdIsInteractive(FILE *fp, const char *filename)¶
如果标准I/O文件 fp 有名字 文件名 被视为互动。这就是文件的情况
isatty(fileno(fp))是真的。如果全局标志Py_InteractiveFlag为true,如果 文件名 指针是NULL或者如果名称等于其中一个字符串'<stdin>'或'???'.
-
void PyOS_BeforeFork()¶
函数在进程复刻前准备一些内部状态。这应该在调用之前调用
fork()或者复制当前进程的任何类似函数。仅适用于以下系统:fork()定义。警告
首席执行官
fork()只能从 "main" thread (属于 "main" interpreter ). 同样的道理PyOS_BeforeFork().3.7 新版功能.
-
void PyOS_AfterFork_Parent()¶
函数更新进程复刻后的一些内部状态。应该在调用后从父进程调用
fork()或复制当前进程的任何类似功能,无论进程复制是否成功。仅适用于以下系统:fork()定义。警告
首席执行官
fork()只能从 "main" thread (属于 "main" interpreter ). 同样的道理PyOS_AfterFork_Parent().3.7 新版功能.
-
void PyOS_AfterFork_Child()¶
函数更新进程复刻后的内部解释器状态。必须在调用后从子进程调用
fork()或者复制当前进程的任何类似函数,如果有任何机会,进程将回调到Python解释器中。仅适用于以下系统:fork()定义。警告
首席执行官
fork()只能从 "main" thread (属于 "main" interpreter ). 同样的道理PyOS_AfterFork_Child().3.7 新版功能.
参见
os.register_at_fork()允许注册自定义python函数PyOS_BeforeFork(),PyOS_AfterFork_Parent()和PyOS_AfterFork_Child().
-
void PyOS_AfterFork()¶
函数在进程复刻之后更新一些内部状态;如果继续使用Python解释器,则应在新进程中调用此函数。如果新的可执行文件加载到新进程中,则不需要调用此函数。
3.7 版后已移除: 此功能被取代
PyOS_AfterFork_Child().
-
int PyOS_CheckStack()¶
当解释器耗尽堆栈空间时返回true。这是一个可靠的检查,但只有在
USE_STACKCHECK定义(当前使用微软Visual C++编译器在Windows上)。USE_STACKCHECK将自动定义;您不应更改自己代码中的定义。
-
PyOS_sighandler_t PyOS_getsig(int i)¶
返回信号的当前信号处理程序 i . 这两个都是薄封装
sigaction()或signal(). 不要直接调用这些函数!PyOS_sighandler_t是的typedef别名 void (*)(int) .
-
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)¶
为信号设置信号处理程序 i 成为 h ;返回旧的信号处理程序。这两个都是薄封装
sigaction()或signal(). 不要直接调用这些函数!PyOS_sighandler_t是的typedef别名 void (*)(int) .
-
wchar_t *Py_DecodeLocale(const char *arg, size_t *size)¶
警告
此函数不应直接调用:请使用
PyConfigAPI与PyConfig_SetBytesString()该函数可确保 Python is preinitialized 。此函数之前不得调用 Python is preinitialized 以便正确配置LC_CTYPE区域设置:请参阅
Py_PreInitialize()功能。属性中的字节字符串进行解码。 filesystem encoding and error handler 。如果错误处理程序是 surrogateescape error handler ,无法解码的字节被解码为U+DC80..U+DCFF范围内的字符;如果字节序列可以解码为代理字符,则使用代理转义错误处理程序转义字节,而不是解码它们。
返回指向新分配的宽字符串的指针,使用
PyMem_RawFree()释放内存。如果尺寸不是NULL,将不包括空字符的宽字符数写入*size返回
NULL解码错误或内存分配错误。如果 size 不是NULL,*size设置为(size_t)-1出现内存错误或设置为(size_t)-2解码错误时。这个 filesystem encoding and error handler 由以下人员选择
PyConfig_Read():请参见filesystem_encoding和filesystem_errors成员:PyConfig。除非C库中存在错误,否则永远不会发生解码错误。
使用
Py_EncodeLocale()函数将字符串编码回字节字符串。3.5 新版功能.
在 3.7 版更改: 该函数现在在 Python UTF-8 Mode 。
在 3.8 版更改: 函数现在在Windows中使用UTF-8编码,如果
Py_LegacyWindowsFSEncodingFlag为零;
-
char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)¶
将宽字符串编码到 filesystem encoding and error handler 。如果错误处理程序是 surrogateescape error handler ,将U+DC80..U+DCFF范围内的代理项字符转换为字节0x80..0xFF。
返回指向新分配的字节字符串的指针,使用
PyMem_Free()释放内存。返回NULL关于编码错误或内存分配错误如果错误“pos”不是
NULL,*error_pos设置为(size_t)-1如果成功,或者在编码错误时设置为无效字符的索引。这个 filesystem encoding and error handler 由以下人员选择
PyConfig_Read():请参见filesystem_encoding和filesystem_errors成员:PyConfig。使用
Py_DecodeLocale()函数将字节字符串解码回宽字符串。警告
此函数之前不得调用 Python is preinitialized 以便正确配置LC_CTYPE区域设置:请参阅
Py_PreInitialize()功能。参见
这个
PyUnicode_EncodeFSDefault()和PyUnicode_EncodeLocale()功能。3.5 新版功能.
在 3.7 版更改: 该函数现在在 Python UTF-8 Mode 。
在 3.8 版更改: 函数现在在Windows中使用UTF-8编码,如果
Py_LegacyWindowsFSEncodingFlag为零;
系统功能¶
这些是实用程序函数,它们使 sys 模块可访问C代码。它们都使用当前解释器线程的 sys 模块的dict,它包含在内部线程状态结构中。
-
PyObject *PySys_GetObject(const char *name)¶
- Return value: Borrowed reference.
返回对象 name 从
sys模块或NULL如果它不存在,则不设置异常。
-
int PySys_SetObject(const char *name, PyObject *v)¶
集合 name 在
sys模块到 v 除非 v 是NULL,在这种情况下 name 从系统模块中删除。退换商品0关于成功,-1关于错误。
-
void PySys_ResetWarnOptions()¶
重置
sys.warnoptions到一个空列表。此函数可以在Py_Initialize().
-
void PySys_AddWarnOption(const wchar_t *s)¶
追加 s 到
sys.warnoptions. 此函数必须在Py_Initialize()以影响警告筛选列表。
-
void PySys_AddWarnOptionUnicode(PyObject *unicode)¶
追加 unicode 到
sys.warnoptions.注意:此函数当前不能从cpython实现外部使用,因为必须在隐式导入之前调用它。
warnings在里面Py_Initialize()为了有效,但在初始化足够的运行时以允许创建Unicode对象之前无法调用。
-
void PySys_SetPath(const wchar_t *path)¶
集合
sys.path到在中找到的路径的列表对象 path 它应该是用平台的搜索路径分隔符分隔的路径列表 (:在UNIX上,;在Windows上)。
-
void PySys_WriteStdout(const char *format, ...)¶
写入输出字符串 格式 到
sys.stdout. 即使发生截断,也不会引发异常(见下文)。格式 应将格式化输出字符串的总大小限制为1000字节或更小--在1000字节之后,输出字符串将被截断。特别是,这意味着不应出现不受限制的“%s”格式;应使用“%.<n>s”限制这些格式,其中,<n>是一个十进制数,计算得出,<n>加上其他格式化文本的最大大小不超过1000字节。还要注意“%f”,它可以为非常大的数字打印数百位数字。
如果出现问题,或
sys.stdout未设置,格式化的消息将写入实际(C级) stdout .
-
void PySys_WriteStderr(const char *format, ...)¶
AS
PySys_WriteStdout()但写信给sys.stderr或 stderr 相反。
-
void PySys_FormatStdout(const char *format, ...)¶
函数类似于pysys_writestdout(),但使用
PyUnicode_FromFormatV()不要将消息截断为任意长度。3.2 新版功能.
-
void PySys_FormatStderr(const char *format, ...)¶
AS
PySys_FormatStdout()但写信给sys.stderr或 stderr 相反。3.2 新版功能.
-
void PySys_AddXOption(const wchar_t *s)¶
解析 s 作为一套
-X选项并将它们添加到当前选项映射中PySys_GetXOptions(). 此函数可以在Py_Initialize().3.2 新版功能.
-
PyObject *PySys_GetXOptions()¶
- Return value: Borrowed reference.
返回的当前字典
-X选项,类似于sys._xoptions. 关于错误,NULL返回并设置异常。3.2 新版功能.
-
int PySys_Audit(const char *event, const char *format, ...)¶
使用任何活动挂钩引发审核事件。如果成功,则返回零;如果失败,则返回非零,并设置异常。
如果增加了钩子, 格式 其他参数将用于构造要传递的元组。除了
N,与中使用的格式字符相同Py_BuildValue()可用。如果构建的值不是元组,它将被添加到单个元素元组中。(TheN格式选项使用引用,但由于无法知道是否使用此函数的参数,因此使用它可能会导致引用泄漏。)注意
#格式字符应始终视为Py_ssize_t,无论是否PY_SSIZE_T_CLEAN定义了。sys.audit()从python代码执行相同的函数。3.8 新版功能.
在 3.8.2 版更改: 要求
Py_ssize_t对于#格式化字符。此前,有人提出了不可避免的贬值警告。
-
int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)¶
追加可调用的 hook 到活动审核挂钩列表。成功时返回零,失败时返回非零。如果运行时已初始化,请在失败时设置错误。通过这个API添加的钩子将为运行时创建的所有解释器调用。
这个 用户数据 指针被传递到hook函数中。由于钩子函数可以从不同的运行时调用,所以该指针不应该直接引用Python状态。
此函数在调用之前是安全的
Py_Initialize(). 当在运行时初始化之后调用时,将通知现有的审计挂钩,并可能通过引发从中分类的错误子类而静默中止操作。Exception(其他错误不会被消除)。钩子功能为 int (*)(const char *event, PyObject *args, void *userData) 在哪里 args 保证是一个
PyTupleObject. 钩子函数总是通过引发事件的Python解释器持有的gil来调用。见 PEP 578 有关审核的详细说明。运行库和标准库中引发事件的函数列在 audit events table . 每个函数的文档中都有详细信息。
提出一个 auditing event
sys.addaudithook没有参数。3.8 新版功能.
过程控制¶
-
void Py_FatalError(const char *message)¶
打印致命错误消息并终止进程。不执行清理。仅当检测到使继续使用Python解释器变得危险的条件时(例如,当对象管理似乎已损坏时),才应调用此函数。在Unix上,标准的C库函数
abort()将尝试生成core文件。这个
Py_FatalError()函数被替换为自动记录当前函数名称的宏,除非Py_LIMITED_API宏已定义。在 3.9 版更改: 自动记录函数名。
-
void Py_Exit(int status)¶
退出当前进程。这个调用
Py_FinalizeEx()然后调用标准的C库函数exit(status). 如果Py_FinalizeEx()指示错误,退出状态设置为120。在 3.6 版更改: 终结过程中的错误不再被忽略。
-
int Py_AtExit(void (*func)())¶
注册要由调用的清除函数
Py_FinalizeEx(). 将不带参数调用cleanup函数,并且不应返回任何值。最多可以注册32个清理函数。注册成功后,Py_AtExit()返回0;失败时,它会返回-1. 首先调用最后注册的清理函数。每个清理函数最多调用一次。由于python的内部终结将在cleanup函数之前完成,因此不应该由 func .