如何删除Linux中的文件,我所拥有的是文件描述符

Era*_*dan 10 c linux

我有一个int早先打开的文件描述符(via open),我需要删除该文件.

我真的必须先获取文件名并打电话remove吗?(例如,通过使用C中的文件描述符获取文件名中的技术)

或者是否有其他(linux特定的OK)方式完全基于文件描述符?

我搜索过,我能找到的最好的是上面的答案.

vz0*_*vz0 7

您可以使用/proc以查看open fd链接到哪个路径,realpath获取符号链接的完整路径.

# ls -l /proc/8701/fd
total 0
lr-x------ 1 root root 64 Apr 23 22:44 0 -> /dev/null
lrwx------ 1 root root 64 Apr 23 22:44 1 -> /dev/null
lrwx------ 1 root root 64 Apr 23 22:44 2 -> /dev/null
lrwx------ 1 root root 64 Apr 23 23:19 20 -> socket:[16204]
lrwx------ 1 root root 64 Apr 23 23:19 21 -> socket:[16205]
lrwx------ 1 root root 64 Apr 23 22:44 3 -> socket:[18743]
l-wx------ 1 root root 64 Apr 23 22:44 4 -> /var/lib/dhcp/dhclient-7a30dd46-5058-47aa-b71e-ff77cfbe4194-wlan0.lease
lrwx------ 1 root root 64 Apr 23 22:44 5 -> socket:[16872]
lrwx------ 1 root root 64 Apr 23 22:44 6 -> socket:[18747]
Run Code Online (Sandbox Code Playgroud)