चेक बाहर this answer फ़ाइल वर्णनकर्ता और this answer प्राप्त करने के लिए फ़ाइल वर्णनकर्ता से फ़ाइल नाम पाने के लिए। लिनक्स पर ठीक होना चाहिए (अन्य ऑपरेटिंग सिस्टम के बारे में निश्चित नहीं है)।
यहां एक त्वरित काम कर उदाहरण (Cygwin/Win7 के तहत परीक्षण किया) है:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int MAXSIZE = 0xFFF;
char proclnk[0xFFF];
char filename[0xFFF];
FILE *fp;
int fno;
ssize_t r;
// test.txt created earlier
fp = fopen("test.txt", "r");
if (fp != NULL)
{
fno = fileno(fp);
sprintf(proclnk, "/proc/self/fd/%d", fno);
r = readlink(proclnk, filename, MAXSIZE);
if (r < 0)
{
printf("failed to readlink\n");
exit(1);
}
filename[r] = '\0';
printf("fp -> fno -> filename: %p -> %d -> %s\n",
fp, fno, filename);
}
return 0;
}
आउटपुट:
fp -> fno -> filename: 0x80010294 -> 3 -> /tmp/test.txt
मुझे विश्वास है कि यह संभव नहीं है। आपको फ़ाइल नाम का अलग-अलग ट्रैक रखना चाहिए। –
संभव नहीं है। वैसे भी [इसे जांचें] (http://stackoverflow.com/questions/9937645/obtain-filename-from-file-pointer-in-c) – tuxuday
क्या ऑपरेटिंग सिस्टम? – hmjd