操作系统实用程序

PyObject * PyOS_FSPath PyObject  *path
Return value: New reference.

返回path的文件系统表示。如果对象是strbytes对象,然后它的引用计数增加。如果对象实现了os.PathLike接口,那么只要它是__fspath__()str对象就会返回bytes。否则TypeError被抬起NULL返回了

新版本3.6.

int Py_FdIsInteractive文件 *fp,常见问题 *filename
如果标准I / O文件fp名称为filenameisdeemed interactive。这是isatty(fileno(fp))为真的文件的情况。如果全局标志Py_InteractiveFlag为true,如果filename指针是NULL或者如果名称等于其中一个字符串"<stdin>""???".
void PyOS_BeforeFork
准备一些内部函数在进程fork之前的状态。这应该在调用之前调用fork()或克隆当前进程的任何类似功能。仅在定义fork()的系统上可用.

版本3.7.

void PyOS_AfterFork_Parent
在进程fork之后更新某些内部状态的函数。这应该在调用fork()或者任何克隆当前进程的类似函数,无论进程克隆是否成功。只能在fork()定义的系统上使用.

版本3.7.

void PyOS_AfterFork_Child
在进程fork之后更新内部解释器状态的函数。这必须在调用fork(),或任何克隆当前进程的类似函数,如果进程有可能回调到Python解释器。只能在定义fork()的系统上使用.

版本3.7.

中的新增内容允许

os.register_at_fork()允许注册自定义Python函数PyOS_BeforeFork(),PyOS_AfterFork_Parent()PyOS_AfterFork_Child().

void PyOS_AfterFork
在进程fork之后更新某些内部状态的函数;如果继续使用Python解释器,这应该在新进程中出现。如果新的可执行文件被加载到新进程中,则不需要调用此函数.

从版本3.7开始不推荐使用:此函数被PyOS_AfterFork_Child().

int PyOS_CheckStack
当解释器用完堆栈空间时返回true。这是一个可靠的检查,但只有在定义USE_STACKCHECK时才可用(目前Windows使用的是Microsoft Visual C ++编译器)。USE_STACKCHECK将自动定义;你永远不应该改变你自己的代码中的定义.
PyOSsighandler_t PyOS_getsig int  i
返回当前信号信号处理程序i。这是一个薄的包装,无论是sigaction()还是signal()。不要直接调用这些功能!PyOS_sighandler_tvoid(*)(int).
的一个typedef别名PyOS_sighandler_t PyOS_setsig int  i,PyOS_sighandler_t  h
设置信号i的信号处理程序为h;返回旧的信号处理程序。这是一个围绕sigaction()signal()的薄包装。不要直接调用这些功能!PyOS_sighandler_tvoid (*)(int).
wchar_t * Py_DecodeLocale的一个typedefalias( const char *  argsize_t  *size
使用 surrogateescapeerror处理程序解码来自语言环境编码字节字符串:将不可解码字节解码为范围U + DC80..U + DCFF中的字符。如果字节序列可以解码为asurrogate字符,使用surrogateescape错误处理程序转义字节而不是解码它们.

编码,最高优先级到最低优先级:

  • UTF-8在macOS和Android上;
  • UTF-8如果启用了Python UTF-8模式;
  • ASCII如果LC_CTYPE语言环境是"C",nl_langinfo(CODESET)返回ASCII编码(或别名),和mbstowcs()wcstombs()函数使用ISO-8859-1编码
  • 当前语言环境编码

返回指向新分配的指针宽字符串,使用PyMem_RawFree()释放内存。如果尺寸不是NULL,将除空字符之外的宽字符数写入*size

返回NULL解码错误或内存分配错误。如果sizeis// NULL, *size设置为(size_t)-1内存错误或设置为(size_t)-2解码错误.

解码错误永远不会发生,除非有错误Clibrary.

使用Py_EncodeLocale()函数将字符串字符串编码为字节串.

参见

PyUnicode_DecodeFSDefaultAndSize()PyUnicode_DecodeLocaleAndSize()函数

新版本3.5.

改版3.7:该函数现在使用UTF-8模式的UTF-8编码.

char* Py_EncodeLocale const wchar_t  *text,size_t  *error_pos
使用surrogateescape错误处理程序:范围内的代理字符U + DC80..U + DCFF转换为字节0x80..0xFF .

编码,最高优先级到最低优先级:

  • UTF-8在macOS和Android上;
  • UTF-8如果启用了Python UTF-8模式;
  • ASCII如果LC_CTYPE语言环境是"C",nl_langinfo(CODESET),则返回ASCII编码(或别名),mbstowcs()wcstombs()函数使用ISO-8859-1编码
  • 当前的locale encoding.

该函数在Python UTF-8模式下使用UTF-8编码.

返回指向新分配的字节串的指针,使用PyMem_Free()释放记忆。返回NULL关于编码错误或内存分配错误

如果error_pos不是NULL, *error_pos设置为(size_t)-1 onsuccess,或设置为编码错误时无效字符的索引.

使用 Py_DecodeLocale()函数将字节串解码回宽字符串.

更改版本3.7:该函数现在使用UTF-8模式的UTF-8编码.

另见

PyUnicode_EncodeFSDefault()PyUnicode_EncodeLocale()功能.

3.5版本中的新版本

改进版本3.7:该功能现在支持UTF-8模式.

 

系统功能

这些是实用程序函数,它们将功能从sys moduleaccessible转换为C代码。他们都使用当前的解释器线程sysmodule的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除非vNULL,否则从sys模块中删除name。成功时返回0,错误时返回-1
void PySys_ResetWarnOptions
重置sys.warnoptions到一个空列表。在Py_Initialize().
void PySys_AddWarnOption const wchar_t  *s
附加ssys.warnoptions。这个函数必须被称为priorto Py_Initialize()以影响警告过滤器列表.
void PySys_AddWarnOptionUnicode PyObject  *unicode
附加unicodesys.warnoptions.

注意:此函数目前不能在CPythonimplementation外部使用,因为它必须在隐式导入warnings之前调用Py_Initialize()要有效,但不能确定,直到足够的运行时被初始化以允许创建Unicode对象.

void PySys_SetPath const wchar_t  *path
sys.path设置为path中找到的路径的列表对象,该列表对象应该是用平台的搜索路径分隔符分隔的路径列表(:在Unix上,;在Windows上).
void PySys_WriteStdout const char  *format, …
写输出字符串由format描述为sys.stdout。即使发生截断,也会引发Noexceptions(见下文).

format应将格式化输出字符串的总大小限制为1000字节或更少 – 在1000字节之后,输出字符串将被截断。特别是,这意味着不应出现不受限制的“%s”格式;应使用“%。&lt; N&gt; s”限制这些格式,其中&lt; N&gt;是计算的十进制数,以便&lt; N&gt;加上其他格式化文本的最大大小,注意1000字节。还要注意“%f”,它可以打印数百个非常大的数字.

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

void PySys_WriteStderr const char  *format, …
AsPySys_WriteStdout(),但写到sys.stderrstderrinstead.
void PySys_FormatStdout const char  *format, …
函数类似于PySys_WriteStdout(),但使用PyUnicode_FromFormatV()格式化消息,不要将消息截断为任意长度.

新版本3.2.

void PySys_FormatStderr const char  *format, …
作为PySys_FormatStdout(),但写到sys.stderrstderrinstead.

新版本3.2.

void PySys_AddXOption const wchar_t  *s
s作为一套-X选项并将它们添加到PySys_GetXOptions()返回的currentoptions映射中。这个功能可以在Py_Initialize().

之前调用。版本3.2.

PyObject * PySys_GetXOptions
Return value: Borrowed reference.

返回-X选项的当前字典,类似于sys._xoptions。出错时,NULL返回并发生异常.

新版本3.2.

 

进程控制

无效Py_FatalErrorconst char  *message

打印致命错误消息并终止该过程。不执行清理。只有在检测到一个会使继续使用Python解释器变得危险的条件时,才应调用此函数。例如,当对象管理似乎被破坏时。在Unix上,调用标准的C库函数abort(),它将尝试生成一个corefile.

void Py_Exit int status

退出当前进程。这调用Py_FinalizeEx()然后调用标准C库函数exit(status)。如果Py_FinalizeEx()表示错误,则退出状态设置为120.

在版本3.6中更改:最终确定的错误不再被忽略.

intPy_AtExit void(*func)()

注册要调用的清理函数Py_FinalizeEx()。将使用无参数调用cleanup函数,并且不应返回任何值。最多可以注册32个清理功能。注册成功后,Py_AtExit()返回0;如果失败,它会返回-1。最后注册的清理功能首先被调用。每次清理功能最多只会被调用一次。由于Python的内部最终化将在清理函数之前完成,因此func.

评论被关闭。