ImageVerifierCode 换一换
格式:DOCX , 页数:59 ,大小:35.83KB ,
资源ID:7397601      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7397601.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式Linux应用编程各函数原型.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式Linux应用编程各函数原型.docx

1、嵌入式Linux应用编程各函数原型open( )函数语法格式所需头文件#include#include#include函数原型int open(const char *pathname , int flags , int perms)函数传入值pathname被打开的文件名(可包括路径名)flag:文件打开方式O_RDONLY : 以只读方式打开文件O_WRONLY : 以只写方式打开文件 O_RDWR : 以读/写方式打开文件O_CREATE : 如果该文件不存在,就创建一个新的文件,并用第三方参数为其设置权限O_EXCL : 如果使用O_CREATE时文件存在,则可返回错误消息。这一参数可

2、测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件O_NOCTTY : 使用本参数时,若文件为终端,那么该终端不会成为调用open()的进程的控制终端O_TRUNC : 若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0O_APPEND : 以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,将写入的数据添加到文件的末尾perms被打开文件的存取权限可以用一组宏定义: S_I(R/W/X)(USR/GRP/OTH)其中R/W/X分别表示读/写/执行权限USR/GRP/OTH分别表示文件的所有者/文件所属组/其他用户(例如,S_IRUSR|S_I

3、WUSR表示设置文件所有者的可读可写属性,八进制表示法中0600也表示同样的权限)函数返回值成功:返回文件描述符失败:-1close( )函数格式所需头文件#include函数原型int close(int fd)函数传入值fd : 文件描述符函数返回值0 : 成功-1 : 出错read( )函数格式所需头文件#include函数原型ssize_t read(int fd , void *buf , size_t count)函数传入值fd : 文件描述符buf : 指定存储器存放读出数据的缓冲区count : 指定读出的字节数函数返回值成功: 实际读出的字节数 0 : 已到达文件尾-1 :

4、出错write( )函数格式所需头文件#include函数原型ssize_t read(int fd , void *buf , size_t count)函数传入值fd : 文件描述符buf : 指定存储器写入数据的缓冲区count : 指定写入的字节数函数返回值成功: 实际读出的字节数 0 : 已到达文件尾-1 : 出错lseek( )函数格式所需头文件#include#include函数原型off_t lseek(int fd , off_t offset , int whence)函数传入值fd : 文件描述符offset : 偏移量,从起始位置所需要移动的距离,单位是字节,可正可负(

5、向前移,向后移)whence :当前位置的基点SEEK_SET : 当前位置为文件的开头,新位置为偏移量SEEK_CUR : 当前位置为文件指针的位置,新位置为当前位置加上偏移量SEEK_END : 当前位置为文件的结尾,新位置为文件大小加上偏移量大小函数返回值成功: 文件的当前位移-1 : 出错fcntl( )函数语法格式所需头文件#include#include#include函数原型int fcntl(int fd , int cmd , struck flock *lock)函数传入值fd文件描述符cmdF_DUPFD : 复制文件描述符F_GETFD : 获得fd的close-on-

6、exec标志,若标志未设置,则文件经过exec( )函数之后仍保持打开状态 F_SETFD : 设置close-on-exec标志,该标志由参数arg的FD_CLOEXEC位决定F_GETFL : 得到open设置的标志F_SETFL : 改变open设置的标志F_GETLK : 根据lock描述,决定是否上文件锁F_SETLK : 设置lock描述的文件锁F_SETLKW : 这是F_SETLK的阻塞版本(命令名中的W表示wait)。在无法获取锁时,会进入睡眠状态;如果可以获取锁或者捕捉到信号则会返回lock结构为flock,设置记录锁的具体状态struck flock short l_ty

7、pe ;/F_RDLCK读取锁(共享锁),F_WRLCK写入锁 (排斥锁),F_UNLCK解锁 off_t l_start ;/加锁区域在文件中的相对位移量(字节),与l_whence值一起决定加锁区域的起始位置 short l_whence ;/相对位移量的起点,取值同lseek的whence off_t l_len ;/加锁区域的长度 pid_t l_pid ;/进程id函数返回值成功:0出错:-1select ( )函数格式所需头文件#include#include#include函数原型int select(int numfds , fd_set *readfds , fd_set *

8、writefds , fd_set *exeptfds , struct timeval *timeout)函数传入值numfds : 该参数值为需要监视的文件描述符的最大值加1readfds : 由select( )监视的读文件描述符集合writefds : 由select( )监视的写文件描述符集合exeptfds : 由select( )监视的异常处理文件描述符集合timeoutNULL : 永远等待,直到捕捉到信号或文件描述符已准备好为止具体值: struck timeval类型的指针,若等待了timeout时间还没有检测到任何文件描述符准备好,就立即返回0 : 从不等待,测试所有指定

9、的文件描述符并立即返回函数返回值成功: 准备好的文件描述符出错: -1超时: 0select ( )文件描述符处理函数FD_ZERO(fd_set *set)清除一个文件描述符集FD_SET(int fd , fd_set *set)将一个文件描述符加入文件描述符集中FD_CLR(int fd , fd_set *set)将一个文件描述符从文件描述符集中清除FD_ISSET(int fd , fd_set *set)如果文件描述符fd为fd_set集中的一个元素,则返回非零值,可以用于测试调用select( )后文件描述符集中的哪个文件描述符是否有变化注: select( )函数中的timeo

10、ut是一个struct timeval类型的指针,结构体结构如下:struct timevallong tv_sec; /秒数long tv_unsec; /微秒数poll( )函数格式所需头文件#include#include函数原型int poll(struct pollfd *fds , int numfds , int timeout)函数传入值fds : struct pollfd结构的指针,用于描述需要对哪些文件的哪些类型的操作进行监控struct pollfdint fd ; /需要监听的文件描述符short events ; /需要监听的事件short revents ; /已

11、发生的事件events成员描述需要监听哪些类型的事件,可以用以下几种标志来描述:POLLIN : 文件中有数据可读POLLPRI : 文件中有紧急数据可读POLLOUT : 可以向文件写入数据POLLERR : 文件中出现错误POLLHUP : 与文件的连接被断开,只限于输出POLLNVAL : 文件描述符是不合法的,即它并没有指向一个成功打开的文件numfds : 需要监听的文件个数,即第一个参数所指向的数组中的元素数目timeout : 表示poll阻塞的超时时间。如果该值小于等于0,则表示无限等待函数返回值成功: 返回大于0的值,表示时间发生的pollfd结构的个数0 : 超时-1 :

12、出错串口的设置主要是设置struct termios结构体的各成员值,结构体结构如下:#includestruct termiosunsigned short c_iflag ; / 输入模式标志unsigned short c_oflag ; / 输出模式标志unsigned short c_cflag ; / 控制模式标志unsigned short c_lflag ; / 本地模式标志unsigned char c_line ; / 线路规程unsigned char c_ccNCC ; / 控制特性speed_t c_ispeed ; / 输入速度speed_t c_ospeed ;

13、/ 输出速度c_cflag支持的常量名称EXTA外部时钟率AEXTB外部时钟率BCSIZE数据位的位掩码CS55个数据位CS66个数据位CS77个数据位CS88个数据位CSTOPB2个停止位(不设置则默认1个停止位)CREAD接收使能PARENB校验位使能PARODD使用奇校验而不使用偶校验HUPCL最后关闭时挂线(放弃DTR)CLOCAL本地连接(不改变端口所有者)CRTSCTS硬件流控c_iflag支持的常量名称IGNPAR忽略奇偶校验错误PARMRK奇偶校验错误掩码ISTRIP裁减掉第8位比特IXON启动输出软件流控IXOFF启动输入软件流控IXANY允许输入任意字符可以重新启动输出(默

14、认为输入起始字符才重启输出)IGNBRK忽略输入终止条件BRKINT当检测到输入终止条件时发送SIGINT信号INLCR将接收到的NL(换行符)转换为CR(回车符)IGNCR忽视接收到的CR(回车符)ICRNL将接收到的CR(回车符)转换为NL(换行符)IUCLC将接收到的大写字符映射为小写字符IMAXBEL当输入队列满时响铃c_oflag支持的常量名称OPOST启用输出处理功能,如果不设置该标志则其它标志都被忽略OLCUC将输出中的大写字符转换成小写字符ONLCR将输出中的换行符转换成回车符ONOCR如果当前列号为0,则不输出回车符OCRNL将输出中的回车符转换成换行符ONLRET不输出回车

15、符OFILL发送填充字符以提供延时OFDEL如果设置该标志,则表示填充字符为DEL字符,否则为NUL字符NLDLY换行符延时掩码CRDLY回车符延时掩码TABDLY制表符延时掩码BSDLY水平退格符延时掩码VTDLY垂直退格符延时掩码FFLDY换页符延时掩码c_lflag支持的常量名称ISIG若收到信号字符(INTR、QUIT等),则会产生相应的信号ICANON启用规范模式ECHO启用本地回显功能ECHOE若设置ICANON,则允许退格操作ECHOK若设置ICANON,则KILL字符会删除当前行ECHONL若设置ICANON,则允许回显换行符ECHOCTL若设置ECHO,则控制字符(制表符、换

16、行符等)会显示成”X”,其中X的ASCII码等于给相应控制字符的ASCII码加上0x40。例如,退格字符(0x08)会显示为”H”(“H”的ASCII码为0x48)ECHOKE若设置ICANON,则允许回显在ECHOE和ECHOPRT中设定的KILL字符NOFLSH在通常情况下,当接收到INTR、QUIT和SUSP控制字符时,会清空输入和输出队列。如果设置该标志,则所有的队列不会被清空TOSTOP若一个后台进程试图向它的控制终端进行写操作,则系统向该后台进程的进程组发送SIGTTOU信号。该信号通常终止进程的执行IEXTEN启用输入处理功能c_cc支持的常量名称VINTR中断控制字符,对应组合

17、键为”Ctrl+C”VQUIT退出操作符,对应组合键为”Ctrl+Z”VERASE删除操作符,对应键为”Backspace”VKILL删除行符,对应组合键为”Ctrl+U”VEOF文件结尾符,对应组合键为”Ctrl+D”VEOL附加行结尾符,对应键为”Carriage return(CR)”VEOL2第二行结尾符,对应键为”Line feed”VMIN指定最少读取的字符数VTIME指定读取的每个字符之间的超时时间设置串口属性的基本流程保存原先串口配置if ( tcgetattr (fd , &old_cfg) != 0 )perror( “ tcgetattr ” )return -1 ;激活

18、选项newtio.c_cflag |= CLOCAL|CREAD ;cfmakeraw( &new_cfg ) ;设置波特率cfsetispeed(&new_cfg , B115200) ;cfsetospeed(&new_cfg , B115200) ;设置字符大小new_cfg.c_cflag &= CSIZE ;new_cfg.c_cflag |= CS8 ;设置奇偶校验奇校验:new_cfg.c_cflag |= (PARODD | PARENB) ;new_cfg.c_iflag |= INPCK ;偶校验:new_cfg.c_cflag |= PARENB ;new_cfg.c_c

19、flag &= PARODD ;new_cfg.c_iflag |= INPCK ;设置停止位new_cfg.c_cflag &= CSTOPB ;new_cfg.c_cflag |= CSTOPB ;设置最少字符和等待时间new_cfg.c_ccVTIME = 0 ;new_cfg.c_ccVMIN = 0 ;清除串口缓冲int tcdrain(int fd) ;/使程序阻塞,直到输出缓冲区的数据全部发送完毕int tcflow(int fd , int action) ;/用于暂停或重新开始输出int tcflush(int fd , int queue_selector) ;/用于清空输

20、入/输出缓冲区激活配置tcsetattr(int fd , int optional_actions , const struct termios *termios_p) ;注:tflush( )函数中queue_selector取值:TCIFLUSH : 对接收到而未被读取的数据进行清空处理。TCOFLUSH : 对尚未传送成功的输出数据进行清空处理。TCIOFLUSH : 包括前两种功能,即对尚未处理的输入/输出数据进行清空处理。optional_actions取值:TCSANOW : 配置的修改立即生效。TCSADRAIN : 配置的修改在所有写入fd的输出都传输完毕之后生效。TCSAF

21、LUSH : 所有已接收但未读入的输入都将在修改生效之前被丢弃。fopen函数格式所需头文件#include函数原型FILE * fopen(const char * path , const char * mode)函数传入值path : 包含要打开的文件路径及文件名mode : 文件打开状态r/rb打开只读/可读写文件,该文件必须存在r+/r+bw/wb打开只写/可读写文件,若文件存在则文件长度清为0,即会擦写文件以前的内容;若不存在则建立该文件w+/w+ba/ab以附加方式打开只写/可读写文件。若文件不存在,则会建立该文件;如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留

22、a+/a+b函数返回值成功: 指向FILE的指针失败: NULLfdopen( )函数格式所需头文件#include函数原型FILE *fdopen(int fd , const char * mode)函数传入值fd : 文件描述符mode : 见上表函数返回值成功: 指向FILE的指针 失败: NULLfreopen( )函数格式所需头文件#include函数原型FILE *freopen(const char * path , const char * mode , FILE *stream)函数传入值path : 包含要打开的文件名及文件路径mode : 见上表stream : 已打开

23、的文件指针函数返回值成功: 指向FILE的指针 失败: NULLfclose( )函数格式所需头文件#include函数原型FILE *fclose(FILE *stream)函数传入值stream : 已打开的文件指针函数返回值成功: 0 失败: EOFfread( )函数格式所需头文件#include函数原型size_t fread(void * ptr , size_t size , size_t nmemb , FILE * stream)函数传入值ptr : 存放读入记录的缓冲区size : 读取的记录大小nmemb : 读取的记录数stream : 要读取的文件流函数返回值成功:

24、返回实际读取到的nmemb数目失败: EOFfwrite( )函数格式所需头文件#include函数原型size_t fwrite(const void * ptr , size_t size , size_t nmemb , FILE * stream)函数传入值ptr : 存放写入记录的缓冲区size : 写入的记录大小nmemb : 写入的记录数stream : 要写入的文件流函数返回值成功: 返回实际写入到的nmemb数目失败: EOF字符输入函数格式所需头文件#include函数原型int getc(FILE * stream)int fgetc(FILE * stream)int

25、getchar(void)函数传入值stream : 要输入的文件流函数返回值成功: 下一个字符失败: EOF字符输出函数格式所需头文件#include函数原型int putc(int c , FILE * stream)int streamutc(int c , FILE * stream)int putchar(int c)函数返回值成功: 字符c失败: EOF行输入函数格式所需头文件#include函数原型char * gets(char * s)int fgets(char * s , int size , FILE * stream)函数传入值s : 要输入的字符串size : 输入

26、的字符串长度stream : 对应的文件流函数返回值成功: s失败: EOF行输出函数格式所需头文件#include函数原型int puts(const char * s)int streamuts(char * s , FILE * stream)函数传入值s : 要输入的字符串stream : 对应的文件流函数返回值成功: s失败: EOF格式化输出函数格式1所需头文件#include函数原型int printf(const char * format , .)int streamrintf(FILE *stream , const char * format , .)int sprint

27、f(char * buf , const char * format , .)函数传入值format : 记录输出格式stream : 文件流buf : 记录输出缓冲区函数返回值成功: 输出字符数(sprintf返回存入数组中的字符数)失败: NULL格式化输出函数格式2所需头文件#include#include函数原型int vprintf(const char * format , va_list arg)int vstreamrintf(FILE *stream , const char * format , va_list arg)int vsprintf(char * buf , const char * format , va_list arg)函数传入值format : 记录输出格式stream : 文件流buf : 记录输出缓冲区arg : 相关命令参数函数返回值成功: 输出字符数(sprintf返回存入数组中的字符数)失败: NULL格式化输入函数格式所需头文件#include函数原型int scanf(const char * format , .)int fscanf(FILE *stream , const char * format , .)int sscanf(char * buf , const char * form

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1