文件指针问题
怎么输出文件指针对应文件的文件名呢?
是linux,命令提示符下编程,文件名仅为英文字母
C/C++ code
?
1
2
3
4
void output_file_name (FILE *f1, FILE *f2)
{
//在这里输出f1的文件名,怎么搞?
}
[解决办法]
GetFileInformationByHandleEx
直接定位/proc/pid/fd目录下的符号链接文件就可以了。
void output_file_name(FILE* fp)
{
char target_path[256];
char file_path[256];
int fd=fileno(fp);
pid_t pid=getpid();
sprintf(file_path,"/proc/%d/fd/%d",pid,fd);
int len=readlink(file_path,target_path,256);
if(len==-1){
printf("readlink error!");
return;
}
target_path[len]='\0';
printf("Path=%s\n",target_path);
}