http://blog.sina.com.cn/s/blog_54f82cc201010oow.html Linux系统是如何区分普通文件与设备驱动文件的研究一 文件的打开 一般来说对于文件或者是设备的操作都是从open开始的,我们首先要打开这个设备节点或者是普通文件,才可以对这个文件进行read、write、ioctl、mmap等操作。所以一切的起源于open。我们首先从open开始研究。 在linux系统进程当中,分为内核空间和用户空间。当我们在用户空间通过open之后,会产生一个软中断,然后通过系统调用陷入内核空间。通过系统调用号,我们可以跳转到该中断例程的入口地址,我们接着看内核源码的实现。 1、在arch/x86/include/asm/unistd_32.h中定义了系统调用号 open 函数用于打开和创建文件。以下是 open 函数的简单描述 对于 open 函数来说,第三个参数(...)仅当创建新文件时才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的路径名(如 C:/cpp/a.cpp);oflag 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于 fcntl.h)通过逻辑或构成。 O_RDONLY O_APPEND 以下三个常量同样是选用的,它们用于同步输入输出 O_DSYNC open 返回的文件描述符一定是最小的未被使用的描述符。 what is the difference between |
|
来自: raymoon_sure > 《linux》