LINUX下嵌入式C文件编程API

  1. access函数

函数名

access

头文件

#include <fcntl.h>

函数原型

int access(const char *pathname, int mode);

函数功能

确定文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式等。

参数说明

1.pathname:欲操作的文件路径与文件名,也可以是目录名。
备注:当该参数为文件的时候,access函数能使用mode参数所有的值,当该参数为目录的时候,access函数值能判断目录夹是否存在。
2.mode:要判断的模式
在头文件unistd.h中的预定义如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具体含义如下:
R_OK 只判断是否有读权限
W_OK 只判断是否有写权限
X_OK 判断是否有执行权限
F_OK 只判断是否存在

函数返回值

如果指定的存取方式有效,则函数返回0;否则函数返回-1。

  1. open函数

函数名

open

头文件

#include <fcntl.h>

函数原型

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

函数功能

打开文件

参数说明

1.pathname:欲打开的文件路径与文件名
2.flags:打开方式,必须从下面的三个中选出一个
  O_RDONLY:只读模式
  O_WRONLY:只写模式
  O_RDWR:读写模式。
另外,还可以有以下附加选项,它们与上面的选项通过‘|’连接。
  O_APPEND:每次写操作都写入文件的末尾。
  O_CREAT:如果指定文件不存在,则创建这个文件。
  O_EXCL:如果要创建的文件已存在,则返回-1,并且修改errno的值 ,需要与O_CREAT配对使用,以确保文件是新建的。
  O_TRUNC:如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即长度截短为0)。
  O_NOCTTY:如果路径名指向终端设备,不要把这个用作控制终端。
  O_NONBLOCK:以不可阻断方式打开,也就是无论有无数据读取或等待,都会立即返回进程之中。
  O_NDELAY:同O_NONBLOCK。
3.mode:如果以新建的方式打开文件,这个参数用于设置文件的访问权限。

函数返回值

成功:返回大于等于0;失败时,-1,并且设置errno。

  1. close函数

函数名

close

头文件

#include <fcntl.h>

函数原型

int close(int fd);

函数功能

关闭文件

参数说明

1.fd:文件描述符

函数返回值

成功,返回0;失败时,-1,并且设置errno。

  1. read函数

函数名

read

头文件

#include <fcntl.h>
#include <unistd.h>

函数原型

int read(int fd, void *buf, int nbyte);

函数功能

从文件中读数据

参数说明

1.fd:是文件描述符;
2.buf:是指定的缓冲区,即指针,指向一段内存单元;
3.nbyte:是要读出文件指定的字节数;

函数返回值

成功:读出文档的字节数,0,表示已到达文件尾或是无可读取的数据;出错:-1,并且设置errno。

5、write函数

函数名

write

头文件

#include <fcntl.h>
#include <unistd.h>

函数原型

int write(int fd, void *buf, int nbyte);

函数功能

写内容到一个文件中

参数说明

1.fd:是文件描述符;
2.buf:是指定的缓冲区,即指针,指向一段内存单元;
3.nbyte:是要写入文件指定的字节数;

函数返回值

成功:写入文档的字节数;出错:-1,并且设置errno。

6、lseek函数

函数名

lseek

头文件

#include <fcntl.h>
#include <unistd.h>

函数原型

off_t lseek(int fd, off_t offset, int whence);

函数功能

移动文件读/写指针

参数说明

1.fd:文件描述符;
2.offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移);
3.whence:为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).
SEEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。

函数返回值

成功:返回文件读写指针的偏移量;失败:返回-1,并且设置errno。

7、stat函数

函数名

stat

头文件

#include <sys/stat.h>  
#include <unistd.h>

函数原型

int stat(const char * file_name, struct stat *buf);

函数功能

stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中。

参数说明

  1. file_name:欲操作的文件路径与文件名,也可以是目录名。
    2.buf:文件属性存放的地址。

struct stat
{
    dev_t st_dev; //device 文件的设备编号
    ino_t st_ino; //inode 文件的节点
    mode_t st_mode; //protection 文件的类型和存取的权限
    nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
    uid_t st_uid; //user ID of owner 文件所有者的用户ID
    gid_t st_gid; //group ID of owner 文件所有者的组ID
    dev_t st_rdev; //device type 若此文件为设备文件, 则为其设备编号
    off_t st_size; //total size, in bytes 文件大小, 以字节计算
    unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
    unsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
    time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、utime、read、write 与tructate 时改变.
    time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、utime 和write 时才会改变
    time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、权限被更改时更新
};

函数返回值

成功:返回0;失败:返回-1,错误原因存于errno。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值