嵌入式Linux高级编程--01posix_文件操作.ppt

嵌入式Linux高级编程--01posix_文件操作.ppt

ID:51588164

大小:1.20 MB

页数:26页

时间:2020-03-24

嵌入式Linux高级编程--01posix_文件操作.ppt_第1页
嵌入式Linux高级编程--01posix_文件操作.ppt_第2页
嵌入式Linux高级编程--01posix_文件操作.ppt_第3页
嵌入式Linux高级编程--01posix_文件操作.ppt_第4页
嵌入式Linux高级编程--01posix_文件操作.ppt_第5页
资源描述:

《嵌入式Linux高级编程--01posix_文件操作.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式Linux高级编程POSIX标准I/O文件操作主讲:王莉Linux系统调用与文件I/OLinux系统调用所谓系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。在linux中用户程序不能直接访问内核提供的服务。为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。用户程序接口(API)在linux中用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准—POSIX标准。这些系统调用编程接口主要通过C库(libc)实现的。内

2、核空间用户空间系统调用用户程序接口API系统命令图1系统调用、API与系统命令之间的关系文件I/O介绍可用的文件I/O函数——打开文件、读文件、写文件等等。大多数linux文件I/O只需用到5个函数:open、read、write、lseek以及close。不带缓存指的是每个read和write都调用内核中的一个系统调用。这些不带缓存的I/O函数不是ANSIC的组成部分,而是POSIX组成部分。C->FILE*file=fopen(“filename”,”r”);C++->ifstreamofstream文件描述符对于内核而言,所有打开文件都由文件描述符引用。

3、文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给read或write。文件描述符在POSIX.1应用程序中,整数0、1、2应被代换成符号常数:STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO这些常数都定义在头文件中。文件描述符的范围是0~OPEN_MAX。早期的UNIX版本采用的上限值是19(允许每个进程打开20个文件),现在很多系统则将其增加至256。open函数#include

4、#include#includeintopen(constchar*pathname,intoflag,…/*,mode_tmode*/);返回:若成功为文件描述符,若出错为-1pathname是要打开或创建的文件的名字。oflag参数可用来说明此函数的多个选择项。对于open函数而言,仅当创建新文件时才使用第三个参数。用下列一个或多个常数进行或运算构成oflag参数(这些常数定义在头文件中):O_RDONLY只读打开。O_WRONLY只写打开。O_RDWR读、写打开。ope

5、n函数O_APPEND每次写时都加到文件的尾端。O_CREAT若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数mode,用其说明该新文件的存取许可权位。O_EXCL如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。O_TRUNC如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。O_NOCTTY如果pathname指的是终端设备,则不将此设备分配作为此进程的控制终端。O_NONBLOCK如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项

6、为此文件的本次打开操作和后续的I/O操作设置非阻塞方式。O_SYNC使每次write都等到物理I/O操作完成。mode该参数仅在access=O_CREAT方式下使用,其取值如下:S_IFMT0xF000文件类型掩码S_IFDIR0x4000目录S_IFIFO0x1000FIFO专用S_IFCHR0x2000字符专用S_IFBLK0x3000块专用S_IFREG0x8000只为0x0000S_IREAD0x0100可读S_IWRITE0x0080可写S_IEXEC0x0040可执行mode该参数仅在access=O_CREAT方式下使用,其取值如下:S_IRW

7、XU00700用户可写、可读、可执行S_IRUSR00400用户可读S_IWUSR00200用户可写S_IXUSR00100用户可执行S_IRWXG00070组可写、可读、可执行S_IRGRP00040组可读S_IWGRP00020组可写S_IXGRP00010组可执行S_IRWXO00007其它用户可写、可读、可执行S_IROTH00004其它用户可读S_IWOTH00002其它用户可写S_IXOTH00001其它用户可执行#include#include#include#include

8、tdio.h>intmain(){//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。