linux – 挂载点归因

linux – 挂载点归因,第1张

概述我正在阅读docker的源代码,并检查是否已经通过这样的测试条件安装了一个目录,它背后的原理是什么? func Mounted(mountpoint string) (bool, error) { mntpoint, err := os.Stat(mountpoint) if err != nil { if os.IsNotExist(err) { @H_502_4@ 我正在阅读docker的源代码,并检查是否已经通过这样的测试条件安装了一个目录,它背后的原理是什么?

func Mounted(mountpoint string) (bool,error) {    mntpoint,err := os.Stat(mountpoint)    if err != nil {        if os.IsNotExist(err) {                return false,nil        }        return false,err    }    parent,err := os.Stat(filepath.Join(mountpoint,".."))    if err != nil {        return false,err    }    mntpointSt := mntpoint.Sys().(*syscall.Stat_t)    parentSt := parent.Sys().(*syscall.Stat_t)    return mntpointSt.Dev != parentSt.Dev,nil}
@H_502_4@解决方法 从linux上的stat(2)手册页:

The st_dev fIEld describes the device on which this file resIDes. (The major(3) and minor(3) macros may be useful to decompose the device ID in this fIEld.)

那么有问题的代码是在目录及其父目录上调用stat系统调用,并检查它们是否驻留在不同的设备上.只有当它们位于不同的文件系统上时才会出现这种情况,这表明相关目录是一个挂载点.

@H_502_4@ @H_502_4@ @H_502_4@ @H_502_4@ 总结

以上是内存溢出为你收集整理的linux – 挂载点归因全部内容,希望文章能够帮你解决linux – 挂载点归因所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1025751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存