Open In App

Python | os.dup() method

OS module in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system dependent functionality.

A file descriptor is small integer value that corresponds to a file or other input/output resource, such as a pipe or network socket. A File descriptor is an abstract indicator of a resource and act as handle to perform various lower level I/O operations like read, write, send etc. 



For Example: Standard input is usually file descriptor with value 0, standard output is usually file descriptor with value 1 and standard error is usually file descriptor with value 2. 
Further files opened by the current process will get the value 3, 4, 5 an so on.

os.dup() method in Python is used to duplicate the given file descriptor. The duplicated file descriptor is non-inheritable, But on Windows platform, file descriptor associated with standard stream (standard input: 0, standard output: 1, standard error: 2) which can be inherited by child processes.



Inheritable file descriptor means if the parent process has a file descriptor 4 in use for a particular file and parent creates a child process then the child process will also have file descriptor 4 in use for that same file. 
 

Syntax: os.dup(fd) 
Parameter: 
fd: A file descriptor, which is to be duplicated. 
Return Type: This method returns the duplicated file descriptor, which is an integer value. 
 

Code: Use of os.dup() method to duplicate a file descriptor  




# Python3 program to explain os.dup() method
   
# importing os module
import os
 
# File path
path = "/home/ihritik/Desktop/file.txt"
 
 
# open the file and get
# the file descriptor associated
# with it using os.open() method
fd = os.open(path, os.O_WRONLY)
 
# Print the value of
# file descriptor
print("Original file descriptor:", fd)
 
# Duplicate the file descriptor
dup_fd = os.dup(fd)
 
# The duplicated file will have
# different value but it
# will correspond to the same
# file to which original file
# descriptor was referring
 
# Print the value of
# duplicated file descriptor
print("Duplicated file descriptor:", dup_fd)
 
 
# Get the list of all
# file Descriptors Used
# by the current Process
# (below code works on UNIX systems)
pid = os.getpid()
os.system("ls -l/proc/%s/fd" %pid)
 
# Close file descriptors
os.close(fd)
os.close(dup_fd)
 
print("File descriptor duplicated successfully")

Output: 
Original file descriptor: 3
Duplicated file descriptor: 4
total 0
lrwx------ 1 ihritik ihritik 64 Jun 14 06:45 0 -> /dev/pts/0
lrwx------ 1 ihritik ihritik 64 Jun 14 06:45 1 -> /dev/pts/0
lrwx------ 1 ihritik ihritik 64 Jun 14 06:45 2 -> /dev/pts/0
l-wx------ 1 ihritik ihritik 64 Jun 14 06:45 3 -> /home/ihritik/Desktop/file.txt
l-wx------ 1 ihritik ihritik 64 Jun 14 06:45 4 -> /home/ihritik/Desktop/file.txt
File descriptor duplicated successfully

 

Article Tags :