Python os.dup() 方法



Python os.dup() 方法返回给定文件描述符的副本。这意味着可以使用副本来代替原始描述符。

获取的新文件描述符是不可继承的。不可继承的意思是创建的文件描述符不能被子进程继承。子进程中的所有不可继承的文件描述符都已关闭。

在 Windows 上,链接到标准流(如标准输入 (0)、标准输出 (1) 和标准错误 (2))的文件描述符能够由子进程继承。如果父进程对特定文件使用文件描述符 3,并且父进程创建了子进程,则子进程也将对同一文件使用文件描述符 3。这称为可继承文件描述符。

语法

以下是 Python os.dup() 方法的语法 -


 os.dup(fd)

参数

  • fd − 这是原始文件描述符。

返回值

此方法返回文件描述符的副本。

示例 1

以下示例显示了 Python os.dup() 方法的用法。在这里,将打开一个文件进行读取和写入。然后通过该方法获得一个重复文件-


import os, sys
# Open a file
fd = os.open( "code.txt", os.O_RDWR|os.O_CREAT )
# Get one duplicate file descriptor
d_fd = os.dup( fd )
# Write one string using duplicate fd
string = "This is test"
x = str.encode(string)
os.write(d_fd, x)
# Close a single opened file
os.closerange( fd, d_fd)
print ("Closed all the files successfully!!")

当我们运行上述程序时,它会产生以下结果——

Closed all the files successfully!!

示例 2

在以下示例中,文件以所有者只读模式打开。重复文件将具有不同的值,但它将对应于原始文件描述符所引用的同一文件。


import os
import stat
# File path
path = "code.txt"
# opening the file for reading only by owner
filedesc = os.open(path, stat.S_IREAD)
print("The original file descriptor is:", filedesc)
# Duplicating the file descriptor
dup_filedesc = os.dup(filedesc)
print("The duplicated file descriptor is:", dup_filedesc)

在执行上述代码时,我们得到以下输出 -

The original file descriptor is: 3
The duplicated file descriptor is: 4