操作系统实用程序¶
-
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)¶
警告
此函数不应直接调用:请使用
PyConfig
API与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 .