迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python os.get_handle_inheritable 方法

作者:迹忆客 最近更新:2023/04/21 浏览次数:

在 Python 中,OS 模块提供了几种与操作系统工作和通信的方法。 os import包含并继承了很多方法,帮助我们对操作系统进行不同的操作。

其中一个方法是 os.get_handle_inheritable() ,它获取指定句柄的可继承标志。 官方 Python 站点说此方法仅适用于 Windows。

Python 有用于描述符的 os.get_inheritable() 方法和用于句柄的 os.get_handle_inheritable() 方法。 该方法用于因子中的套接字句柄。

现在的问题是,什么是文件和目录描述符?


Python 中的文件和目录描述符

为了直接与操作系统内核通信,我们有低级文件描述符。 这些文件描述符是一个整数的形式,它在每个进程的内核存储的所有打开文件的表中找到打开的文件。

几个系统调用可以接受具有以下特征的文件描述符(建议与之交互):

  1. 手动错误处理
  2. 在少数情况下重试几次
  3. 需要固定大小的缓冲区

为了方便地与文件交互并减少错误,我们需要 Python 类,它们是包装文件描述符的文件对象。

如果您看到引用目录的文件描述符,则 dir_fd 不是 None,并且操作路径是相对于该目录的。 仅当路径是绝对路径时才会忽略 dir_fd。

我们还可以在我们的平台上使用命令 os.supports_dir_fd 检查 dir_fd 的可用性和支持。 如果 dir_fd 不可用,平台将显示并引发错误 NotImplementedError。

符号链接

如果要处理的路径的最后一项是符号链接并且 follow_symlinks 为 False,则符号链接将对方法进行操作。

类似于特定平台的文件和目录描述符可用性,我们也可以使用命令 os.supports_follow_symlinks 检查我们平台上的 follow_symlinks 支持方法。

如果符号链接不可用,将引发异常 NotImplementedError

执行

在实现过程中,如果我们想检查提供的路径是否可以作为您操作系统上特定方法的文件描述符,我们可以使用 os.supports_fd。

如果您的操作系统不可用,将通过显示 NotImplementedError 异常来引发异常。


Python 语法 os.get_handle_inheritable() 方法

os.get_handle_inheritable(handle)

参数

  • handle - 这些是具有包含 0、1 或 2 的整数数据类型的文件句柄。这是 get_handle_inheritable() 方法的单个参数。

返回值

这个方法不返回任何东西; 取而代之的是,它获得了可继承标志,一个布尔值 True 或 False。


示例 1:在 Python 中使用 os.get_handle_inheritable() 方法

# this is how you can use the os.get_handle_inheritable() method
def get_inheritable(self):
  return os.get_handle_inheritable(self.fileno())

os.get_handle_inheritable() 方法获取文件描述符的继承标志。 此标志显示并突出显示描述符是否可以由其子进程继承。

在 Python 3.4 版本(默认情况下)中,Python 创建的文件描述符是非继承的。

Windows:

在子进程中,文件句柄和非继承句柄都是关闭的,只有始终继承的原始流(文件句柄 0、1 和 2,即 stdin、stdout 和 stderr)除外。

Unix:

当一个新的程序被执行时,非继承的文件描述符在子进程中被关闭。 相比之下,其他(文件描述符)是继承的。


示例 2:探索 os 模块中的 os.get_handle_inheritable() 方法

正如我们所讨论的,如果您忘记或想探索 os 模块中的所有方法,os 模块提供了不同的方法供您使用。

您始终可以在 print 语句中使用 dir() 方法来输出所有这些方法。 请参阅下面的源代码以找到不同的方法和 os.get_handle_inheritable() 方法。

# importing the os module for using inside methods
import os
# use the dir() method to explore other methods
print(dir(os))

输出:

['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便