主页 > 开源代码  > 

二、Linux文件-Open函数讲解实战

二、Linux文件-Open函数讲解实战

目录

1.Open函数讲解

2.open函数实战

2.1 man 1 ls 查询Shell命令

2.2 man 2 open 查看系统调用函数

2.3项目实战

2.3.1O_RDWR和O_CREAT

 2.3.2O_APPEND的用法



1.Open函数讲解

高频使用的Linux系统调用:open   write   read   close

Linux自带的工具:man手册:

man 1是普通的shell命令,例如 ls    输入:man 1 ls

man2是系统调用函数,比如open,write说明    输入:man 2 open

在Linux系统库的定义:

int open(const char *pathname, intflags); /*比较常用*/ int open(const char *pathname, intflags, mode_tmode); //包含的头文件 #include <sys/types.h>//这里提供的类型pid_t和size_t的定义 #include <sys/stat.h> #include <fcutl.h>

返回值:

成功,返回句柄,我们后面对于文件的读写,关闭等都通过句柄来操作。失败,返回-1

参数说明:

grep -nr "xxxx" ./   可以通过这个指令来查找底层的宏O_RDONLY。pathname:文件的路径名,如果只写文件名,就默认当前目录,如果在文件名加上路径,就按照绝对路径来打开文件。flags:表示打开文件后用的操作

底层是一个宏,它可以以16进制的形式存放。

O_RDONLY:只读模式0x 0000 0000

O_WRONLY:只读模式0x 0000 0001

O_RDWR:可读可写0x 0000 0002

参数说明:

O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。0x00002000O_CREAT 表示如果指定文件不存在,则创建这个文件 0x0000 0100O_EXCL 表示如果要创建的文件已经存在,则出错,同时返回-1,并且修改errno的值O_TRUNC 表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端 2.open函数实战 2.1 man 1 ls 查询Shell命令  终端输入 man 1 ls,可以看到有名字、参数、描述。-a是ls后面追加的一些参数和对应的用法。q退出。 2.2 man 2 open 查看系统调用函数  终端输入 man 2 open,查看系统调用函数,可以看到有名字、参数、描述。 这是一个调用open 函数的栗子。在库函数的文件中查找宏: 2.3项目实战 2.3.1O_RDWR和O_CREAT vi hello.c 打开并创建文本写入主函数,:wd退出并保存,看下使用open()函数需要包含的头文件.复制所需的头文件,并gg=G自动调整代码。代码写好保存并退出(:wq)使用gcc hello.c -o hello 编译并名为hello,生成helllo的可执行文件./hello 执行成功。程序会因为找不到 mm 而打印 open failed! 而用 touch mm创建一个mm文件。然后再执行./hello,就会打印 open succeed!上述是使用路径的方式打开,接下来我们直接使用文件名。修改代码。并重新用gcc编译。删除mm 并重新编译代码 发现,也是可以执行成功的。再上述的只读(O_RDONLY)基础上追加一个创建(O_CREAT)功能。保存并退出,并重新编译。加上此功能后,发现代码运行后自动创建了mm。ls -l 查看文件权限。  2.3.2O_APPEND的用法 O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。使用时,光标默认指向目标文件的末尾。代码编译后运行,发现每运行一次代码,file文件里的内容都会在旧的内容后面追加一次。   cat file ,查看file文件里面的内容。

标签:

二、Linux文件-Open函数讲解实战由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“二、Linux文件-Open函数讲解实战