不可以,进程里打开的文件是一个“文件描述符”,或者用windows里的说法是“文件句柄”,可以理解成一个“文件操作器”。一个文件可以同时被多个不同进程的文件描述符操作,而文件实体本身不提供“正在操作它的文件描述符”的记录。
反过来,你可以通过文件描述符获得文件的路径:
#include
#include
char filePath[PATH_MAX];
if (fcntl(fd, F_GETPATH, filePath) < 0)
{
puts( "some error occured!");
}
然后在你已经打开的文件描述符中,寻找带有想要的路径的,关闭之。
如果你不是直接用文件描述符操作文件,而是通过std库的FILE指针,那么可以通过:
#include
int fd = fileno( fp);
来获取到文件指针内含的文件描述符。
不可以,只能那样关闭
可以看看具体函数怎么实现的。