Linux下文件操作的主要系统调用,注意要点及说明!


基本上所有的操作系统都会有对文件的操作,也叫文件I/O。除开可以C函数库中基本操作外,所有操作系统都会针对各自的特点重新提供一些操作文件的API,下面描述一下linux下的主要文件操作API。

一、函数名称及格式。
creat   函数(相信很多的初学者都会在这个名字上吃点小亏)- 创建文件

int creat(const char* pathname,mode_t mode);
/* 返回值 :若成功返回为只写打开的文件描述符,若错误则返回 -1*/

open  函数 - 打开文件

int open(const char* pathname,int oflag,.../* mode_t mode*/);
/* 返回值 :若成功返回为文件描述符,若错误则返回 -1*/

close 函数 - 关闭文件

int close(int fileds);
/* 返回值 :若成功返回为0,若错误则返回 -1*/

lseek 函数 - 移动到文件的指定位置

int lseek(int fileds,off_t offset,int whence);
/* 返回值 :若成功返回为新的文件偏移量,若错误则返回 -1*/

read 函数 - 读取文件内容

ssize_t read(int fileds,void*buf,size_t nbytes);
/* 返回值:若是成功返回读到字节数,若是文件结尾则返回0,若是错误则返回-1*/

write 函数 - 向文件中写入内容

ssize_t write(int fileds,const void*buf,size_t nbytes);
/* 返回值:若是成功返回写入字节数,若是错误则返回-1*/

access 函数 - 判断文件的读写权限

int access(const char* pathname,int mode);
/*返回值: 成功返回1,错误返回0*/

二、对应的头文件表:

#include <fcntl.h> 时,可以使用函数:creat();open();access();
#include <unistd.h>时,可以使用函数:close();read();write();lseek();

三、需要注意点说明:

1.  由于creat函数的很多限制,目前常用如下方式替代掉creat函数新建文件:

open(pathname,O_WRONLY | O_CREAT | O_TRUNC,mode);

2.  读取数据时,若是数据量少于nbytes,则返回实际的读取数。

3.  文件的操作是按照字节的方式操作,因此在计算是一般按照字节计算相应的值。

常用硬件接口简述及调试要点:SPI


SPI(Serial Peripheral Interface Bus 译作:串行外设接口)是一种用于短程通信的同步串行通信接口规范,具有高速,全双工的特点。这种接口首先被Motorola(摩托罗拉)公司开发,然后发展成了一种行业规范。

SPI设备之间使用全双工模式通信,包含一个主机和一个或多个从机。主机产生待读或待写的帧数据,多个从机通过一个片选线路 决定哪个来响应主机的请求。
Continue reading "常用硬件接口简述及调试要点:SPI"

常用硬件接口简述及调试要点:UART


UART(Universal Asynchronous Receiver/Transmitter,译为:通用异步收发传输器)是最为简单的异步接口,可以按照要求配置成全双工,半双工,单TX或者单RX四种方式运行,常用的UART标准有:EIA-RS-232(也称:232、RS-232),EIA-485(也称:RS-485),EIA-422(也称:RS-422)等,它们是各种异步串行通信口的接口标准和总线标准,它们规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。
Continue reading "常用硬件接口简述及调试要点:UART"

常用硬件接口简述及调试要点:I²C



I²C接口是在嵌入式调试中最为常用的接口,由于其逻辑简单,接线少,且稳定可靠,因此经常作为外部设备连接主控的接口。我将按照如下模式进行简述,接口的历史渊源,接口的物理连接和特点,运行流程和调试的要点4个方面来介绍,具体请见下文。

Continue reading "常用硬件接口简述及调试要点:I²C"