zoukankan      html  css  js  c++  java
  • 文件打开open()

     linux/fs/open.c

    SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
    {
        long ret;
    
        if (force_o_largefile()) flags |= O_LARGEFILE;
        ret = do_sys_open(AT_FDCWD, filename, flags, mode);
        /* avoid REGPARM breakage on x86: */
        asmlinkage_protect(3, ret, filename, flags, mode);
        return ret;
    }
    long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
    {
        char *tmp = getname(filename);
        int fd = PTR_ERR(tmp);

        if (!IS_ERR(tmp)) {
            fd = get_unused_fd_flags(flags);
            if (fd >= 0) {
                struct file *f = do_filp_open(dfd, tmp, flags, mode, 0);
                if (IS_ERR(f)) {
                    put_unused_fd(fd);
                    fd = PTR_ERR(f);
                } else {
                    fsnotify_open(f->f_path.dentry);
                    fd_install(fd, f);
                }
            }
            putname(tmp);
        }
        return fd;
    }
  • 相关阅读:
    JSP内置对象
    Java数据结构
    Java引用传递
    椭圆曲线算法的基本原理及实现
    常见的Java异常
    Java数据结构
    Java数据结构
    重拾JSP
    [洛谷P6185] [NOI online 提高]T1 序列
    [题解][BZOJ1299]巧克力棒
  • 原文地址:https://www.cnblogs.com/linengier/p/2995826.html
Copyright © 2011-2022 走看看