FILE * fd = fopen ("/tmp/12345","wb");
如果我有变量 fd
,我该如何打印文件路径? (/tmp/12345) 在 Linux 环境中。
最佳答案
你不能。不仅仅是标准 C。
在 Linux 上你可以这样做:
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#include <stdlib.h>
int print_filename(FILE *f)
{
char buf[PATH_MAX];
char fnmbuf[sizeof "/prof/self/fd/0123456789"];
sprintf(fnmbuf,"/proc/self/fd/%d", fileno(f));
ssize_t nr;
if(0>(nr=readlink(fnmbuf, buf, sizeof(buf)))) return -1;
else buf[nr]='\0';
return puts(buf);
}
int main(void)
{
FILE * f = fopen ("/tmp/12345","wb");
if (0==f) return EXIT_FAILURE;
print_filename(f);
}
关于C 从 FILE* 打印文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58081928/