这个问题与Linux有关,解决方案不需要具有可移植性。
我正在寻找一个库函数/系统调用或一些组合,可以为任意文件提供设备(例如:/dev/sdb1
)或挂载点(例如:/home
)。看起来statfs
结构体的f_fsid
字段可以实现此功能,但在Linux上未被使用。
我可以轻松地使用shell查找这些信息:
df "$filename" | awk 'NR==1 {next} {print $6; exit}'
但似乎exec
系列函数都不会返回所运行命令的输出结果,而且我更倾向于只使用纯C来解决问题。
popen
,而不是exec
。 - Karoly Horvathpopen()
解决方案,然后再改成纯 C。 - Darren Kirbydf
,像其他工具一样,是开源的(coreutils?fileutils?),因此您可以查看它在C中是如何完成的。 - Karoly Horvathrealpath()
或类似的函数,以防路径名中包含符号链接等情况。 - Jonathan Leffler