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
# 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" ) |
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