O módulo OS em Python fornece funções para interagir com o sistema operacional. OS vem em módulos de utilitário padrão do Python. Este módulo fornece uma maneira portátil de usar a funcionalidade dependente do sistema operacional.

Um descritor de arquivo é um pequeno valor inteiro que corresponde a um arquivo ou outro recurso de entrada / saída, como um canal ou soquete de rede. Um descritor de arquivo é um indicador abstrato de um recurso e atua como um identificador para realizar várias operações de E / S de nível inferior, como leitura, gravação, envio, etc.

Por exemplo: a entrada padrão é geralmente o descritor de arquivo com valor 0, a saída padrão é geralmente o descritor de arquivo com valor 1 e o erro padrão é geralmente o descritor de arquivo com valor 2.
Outros arquivos abertos pelo processo atual obterão o valor 3, 4, 5 e em breve.

os.dup2()O método em Python é usado para duplicar um descritor de arquivo fd para um determinado valor fd2. O descritor de arquivo será duplicado para fd2 apenas se fd2 estiver disponível e o descritor de arquivo duplicado for herdável por padrão.

Descritor de arquivo herdável significa que se o processo pai tem um descritor de arquivo 4 em uso para um arquivo específico e o pai cria um processo filho, então o processo filho também terá o descritor 4 em uso para esse mesmo arquivo.



Sintaxe: os.dup2 (fd, fd2, herdável = verdadeiro)

Parâmetro:
fd : um descritor de arquivo, que deve ser duplicado.
fd2 : Este é o valor duplicado do descritor de arquivo.
herdável (opcional): um valor booleano, verdadeiro ou falso. O valor padrão deste parâmetro é True, o que significa que o descritor de arquivo duplicado pode ser herdado por processos filho. Para torná-lo não herdável, defina-o como False.

Tipo de retorno: Este método retorna o segundo parâmetro fd2, ou seja, descritor de arquivo duplicado.

    
import os 
path = "/home/ihritik/Desktop/file.txt"
  
  
fd = os.open(path, os.O_WRONLY) 
print("Original file descriptor:", fd) 
dup_fd = 7
os.dup2(fd, dup_fd) 
  
print("Duplicated file descriptor:", dup_fd) 
  
  
pid = os.getpid() 
os.system("ls -l/proc/%s/fd" %pid) 
os.close(fd) 
os.close(dup_fd) 
  
print("File descriptor duplicated successfully") 
Resultado:
Descritor de arquivo original: 3
Descritor de arquivo duplicado: 7
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 7 -> /home/ihritik/Desktop/file.txt
Descritor de arquivo duplicado com sucesso