来自FILE *的C打印文件路径 [英] C print file path from FILE*
本文介绍了来自FILE *的C打印文件路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
FILE * fd = fopen ("/tmp/12345","wb");
如果我具有变量fd
,如何打印文件路径? (/tmp/12345)在Linux环境中.
If I have the variable fd
, how can I print the file path ? (/tmp/12345) in Linux env.
推荐答案
您不能.不只是标准C.
You can't. Not with just standard C.
在Linux上,您可以执行以下操作:
On Linux you can do:
#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);
}
这篇关于来自FILE *的C打印文件路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文