首页 > 编程知识 正文

procreate,cannot create directory什么意思

时间:2023-05-06 14:58:44 阅读:165400 作者:275

mknod系统调用,而不是所谓的create系统调用,仅是mknod系统调用。 mknodat和mknod的syscall实际上都调用do_mknodat () )函数。

do_mknodat ()在做什么?

----------------------namei.clong do _ mknod struct path path; unsigned int lookup_flags=0; error=may_mknod(mode; if(error )返回错误; retry : dentry=user _ path _ create (DFD、filename、path、lookup_flags ); if(is_err(dentry ) ) returnptr_err ) dentry; if (! is _ POSIX ACL (path.dentry-d _ inode ) ) mode=~current_umask ); error=security_path_mknod(path,dentry,mode,dev ); if(error ) goto out; switch(modes_ifmt ) case 0: cases _ if reg : error=VFS _ create (path.dentry-d _ inode,dentry,mode,mode,mode error(IMA_post_path_mknod ) Dentry; 黑; cases _ if chr : cases _ if blk : error=VFS _ mknod (path.dentry-d _ inode,dentry,mode,new _ decode _ dev cases _ ififo : cases _ if sock : error=VFS _ mknod (path.dentry-d _ inode,dentry,mode,0 ); 黑; }out:done_path_create(path,dentry ); retry _ esta le (error,lookup_flags ) ) {lookup_flags |=LOOKUP_REVAL; goto retry; }return error; } 1. may_mknod基于模式检查是否可以创建文件,可以创建的有REG、CHR、BLK、FIFO和SOCK五种文件,DIR和其他显然是非法的。

staticintmay_mknod(umode_tmode ) switch (modes _ ifmt ) )。 { cases _ if reg : cases _ if chr : cases _ if blk : cases _ if sock 3360 case 0:/* zeromodetransase default :返回虚拟; }2.根据文件类型使用适当的vfs_xxx

普通文件是关于VFS_create(parent_inode,sub_dentry,mode )

其他一些文件对于VFS_mknod(parent_inode,sub_dentry,mode )

由于实际上分别到达parent dir的dir-i_op-create (和dir-i_op-mknod ) ),差异还是取决于如何实现每个文件系统的dir的i_op。

以ext4为例

请参阅------------conststructinode _ operations ext4_ dir _ inode _ operations={.create=ext 4 . lookup .symlink=ext4_symlink, mkdir=ext4_mkdir, rmdir=ext4_rmdir, mknod=ext4_mknod, tmpfile . listxattr=ext4_listxattr, get_acl=ext4_get_acl, set_ACL=ext4_set ext4_mknod和ext4_create之间的差异

最容易理解create的是基本的inode和文件的ops。对应的mknod端init_special_inode根据文件类型(CHR,BLK,FIFO )而不同的i_fops和i_fops

如果open系统调用flag包含O_CREAT,并且文件不存在,则open系统调用将创建该文件。 当然这只针对规则文件,所以我们走的是create。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。