Operating System Utilities¶
- int
Py_FdIsInteractive
(FILE *fp, const char *filename)¶ 如果名为filename的标准I / O文件fp被视为交互式,则返回true(非零)。对于
isatty(fileno(fp))
为真的文件,就是这种情况。如果全局标志Py_InteractiveFlag
为真,如果filename指针NULL,或者如果名称等于字符串'<stdin>'
或'???'
。
- void
PyOS_AfterFork
()¶ 在进程叉之后更新一些内部状态的功能;如果Python解释器将继续使用,则应在新进程中调用。如果将新的可执行文件加载到新进程中,则不需要调用此函数。
- int
PyOS_CheckStack
()¶ 当解释器用尽堆栈空间时返回true。这是一个可靠的检查,但仅在定义
USE_STACKCHECK
(目前在Windows上使用Microsoft Visual C ++编译器)时可用。USE_STACKCHECK
将被自动定义;你不应该改变你自己的代码中的定义。
- PyOS_sighandler_t
PyOS_getsig
(int i)¶ 返回信号i的当前信号处理程序。这是
sigaction()
或signal()
的薄包装。不要直接调用这些函数!PyOS_sighandler_t
是void (*)(int)
的typedef别名。
- PyOS_sighandler_t
PyOS_setsig
(int i, PyOS_sighandler_t h)¶ 将信号i的信号处理程序设置为h;返回旧的信号处理程序。这是
sigaction()
或signal()
的薄包装。不要直接调用这些函数!PyOS_sighandler_t
是void (*)(int)
的typedef别名。
- wchar_t*
Py_DecodeLocale
(const char* arg, size_t *size)¶ 使用surrogateescape error handler解码来自语言环境编码的字节字符串:不可解码字节解码为范围U + DC80..U + DCFF中的字符。如果字节序列可以解码为替代字符,则使用代理转义错误处理程序转义字节,而不是解码它们。
返回一个指向新分配的宽字符串的指针,使用
PyMem_RawFree()
释放内存。如果大小不是NULL
,请将除空字符之外的宽字符数写入*size
解码错误或内存分配错误时返回
NULL
。如果size不是NULL
,则在内存错误时将*size
设置为(size_t)-1
(size_t)-2
。解码错误绝不会发生,除非C库中有错误。
使用
Py_EncodeLocale()
函数将字符串编码回字节字符串。版本3.5中的新功能。
- char*
Py_EncodeLocale
(const wchar_t *text, size_t *error_pos)¶ 使用surrogateescape error handler将宽字符串编码为语言环境编码:范围U + DC80..U + DCFF中的替代字符将转换为字节0x80..0xFF。
返回一个指向新分配的字节串的指针,使用
PyMem_Free()
释放内存。在编码错误或内存分配错误时返回NULL
如果error_pos不是
NULL
,则将*error_pos
设置为编码错误上无效字符的索引,或设置为(size_t)-1
除此以外。使用
Py_DecodeLocale()
函数将字节字符串解码为宽字符串。版本3.5中的新功能。
System Functions¶
这些是实用函数,使得sys
模块的功能可以访问C代码。它们都使用当前解释器线程的sys
模块的dict,它包含在内部线程状态结构中。
- int
PySys_SetObject
(const char *name, PyObject *v)¶ 除非v是NULL,否则将
sys
模块中的名称设置为v case name从sys模块中删除。成功返回0
,出现错误时返回-1
。
- void
PySys_ResetWarnOptions
()¶ 将
sys.warnoptions
重置为空列表。
- void
PySys_AddWarnOption
(wchar_t *s)¶ 将s附加到
sys.warnoptions
。
- void
PySys_AddWarnOptionUnicode
(PyObject *unicode)¶ 将unicode附加到
sys.warnoptions
。
- void
PySys_WriteStdout
(const char *format, ...)¶ 将格式描述的输出字符串写入
sys.stdout
。没有发生异常,即使发生截断(见下文)。格式应将格式化输出字符串的总大小限制为1000字节或更少 - 在1000字节后,输出字符串将被截断。特别是,这意味着不应出现不受限制的“%s”格式;这些应该使用“%。
s”来限制,其中 还要注意“%f”,它可以为非常大的数字打印数百位数字。是计算的十进制数,以使 加上其他格式化文本的最大大小不超过1000字节。 如果出现问题或
sys.stdout
未设置,则格式化的消息将写入实际(C级)stdout。
- void
PySys_WriteStderr
(const char *format, ...)¶ 作为
PySys_WriteStdout()
,但改为写入sys.stderr
或stderr。
- void
PySys_FormatStdout
(const char *format, ...)¶ 函数类似于PySys_WriteStdout(),但使用
PyUnicode_FromFormatV()
格式化消息,并且不将消息截断为任意长度。版本3.2中的新功能。
- void
PySys_FormatStderr
(const char *format, ...)¶ 作为
PySys_FormatStdout()
,但改为写入sys.stderr
或stderr。版本3.2中的新功能。
- void
PySys_AddXOption
(const wchar_t *s)¶ 将s解析为一组
-X
选项,并将它们添加到由PySys_GetXOptions()
返回的当前选项映射。版本3.2中的新功能。
- PyObject *
PySys_GetXOptions
()¶ - 返回值:借用引用。
返回
-X
选项的当前字典,类似于sys._xoptions
。出错时,将返回NULL并设置异常。版本3.2中的新功能。
Process Control¶
- void
Py_FatalError
(const char *message)¶ 打印致命错误消息并终止进程。不执行清除。这个函数只有在检测到条件时才会被调用,这会使继续使用Python解释器会有危险;例如,当对象管理似乎被破坏时。在Unix上,调用将尝试产生
core
文件的标准C库函数abort()
。
- void
Py_Exit
(int status)¶ 退出当前进程。这调用
Py_Finalize()
,然后调用标准C库函数exit(status)
。
- int
Py_AtExit
(void (*func)())¶ 注册要由
Py_Finalize()
调用的清除函数。清除函数将被调用没有参数,应该不返回任何值。最多可以注册32个清除功能。注册成功后,Py_AtExit()
返回0
;失败时,它返回-1
。最后注册的清除函数称为第一个。每个清除函数最多调用一次。由于Python的内部最终化将在清理函数之前完成,因此不应通过func调用Python API。