Ok, désolé, je n'avais pas bien compris ton problème.
Dans ce cas, je ne vois pas de solution portable.
Une manière qui ne marche que sur les systèmes Unix/Linux est d'appeler la commande lsof.
par exemple
lsof -a -d monfd -p monpid
te renverra des informations sur le fichier dont le fd est monfd et le pid est monpid (notamment le chemin absolu du fichier).
Pour connaitre le pid du programme en cours, tu peux utiliser la fonction
os.getpid()
Voici un exemple de code (à améliorer)
1 2 3 4 5 6 7 8 9 10 11 12
| import subprocess
import os
def getFullPathFromFd(fd):
pid = os.getpid()
cmd = ['lsof', '-a', '-p', str(pid), '-d', str(fd)]
output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
lines = output.split('\n')
if len(lines) == 1:
pass # aucun fichier n'a ce fd, gerer l'erreur
else:
return lines[1].split()[8] |
Partager