Рубрики

Python | метод os.dup ()

Модуль ОС в Python предоставляет функции для взаимодействия с операционной системой. ОС поставляется под стандартные служебные модули Python. Этот модуль предоставляет портативный способ использования функциональных возможностей, зависящих от операционной системы.

Файловый дескриптор представляет собой небольшое целочисленное значение, которое соответствует файлу или другому ресурсу ввода / вывода, например каналу или сетевому сокету. Файловый дескриптор является абстрактным индикатором ресурса и действует как дескриптор для выполнения различных операций ввода-вывода более низкого уровня, таких как чтение, запись, отправка и т. Д.

Например: стандартным вводом обычно является дескриптор файла со значением 0, стандартным выводом обычно является дескриптор файла со значением 1, а стандартной ошибкой обычно является дескриптор файла со значением 2.
Другие файлы, открытые текущим процессом, получат значения 3, 4, 5 и т. Д.

os.dup() в Python используется для дублирования заданного дескриптора файла. Дублированный дескриптор файла не наследуется, но на платформе Windows дескриптор файла связан со стандартным потоком (стандартный ввод: 0, стандартный вывод: 1, стандартная ошибка: 2), который может наследоваться дочерними процессами.

«Наследуемый дескриптор файла» означает, что если родительский процесс имеет дескриптор 4 файла, используемый для конкретного файла, а родительский процесс создает дочерний процесс, тогда у дочернего процесса также будет использоваться дескриптор 4 файла для того же файла.

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.

Код: использование метода os.dup() для дублирования дескриптора файла

# Python программа для объяснения метода os.dup ()

    
# импорт модуля os

import os

  
# Путь к файлу

path = "/home/ihritik/Desktop/file.txt"

  

  
# открыть файл и получить
# дескриптор файла, связанный
# с помощью метода os.open ()

fd = os.open(path, os.O_WRONLY)

  
# Распечатать значение
# дескриптор файла

print("Original file descriptor:", fd)

  
# Дублировать дескриптор файла

dup_fd = os.dup(fd)

  
# Дублированный файл будет иметь
# другое значение, но это
# будет соответствовать тому же
# файл, к которому относится исходный файл
# дескриптор реферировал

  
# Распечатать значение
# дубликат файлового дескриптора

print("Duplicated file descriptor:", dup_fd)

  

  
# Получить список всех
# Используемые дескрипторы файла
# текущим процессом
# (приведенный ниже код работает в системах UNIX)

pid = os.getpid()

os.system("ls -l/proc/%s/fd" %pid)

  
# Закрыть дескрипторы файлов
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

Рекомендуемые посты:

Python | метод os.dup ()

0.00 (0%) 0 votes