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

上传人:b****5 文档编号:7397601 上传时间:2023-01-23 格式:DOCX 页数:59 大小:35.83KB
下载 相关 举报
嵌入式Linux应用编程各函数原型.docx_第1页
第1页 / 共59页
嵌入式Linux应用编程各函数原型.docx_第2页
第2页 / 共59页
嵌入式Linux应用编程各函数原型.docx_第3页
第3页 / 共59页
嵌入式Linux应用编程各函数原型.docx_第4页
第4页 / 共59页
嵌入式Linux应用编程各函数原型.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

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

《嵌入式Linux应用编程各函数原型.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux应用编程各函数原型.docx(59页珍藏版)》请在冰豆网上搜索。

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

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

open()函数语法格式

所需头文件

#include

#include

#include

函数原型

intopen(constchar*pathname,intflags,intperms)

函数传入值

pathname

被打开的文件名(可包括路径名)

flag:

文件打开方式

O_RDONLY:

以只读方式打开文件

O_WRONLY:

以只写方式打开文件

O_RDWR:

以读/写方式打开文件

O_CREATE:

如果该文件不存在,就创建一个新的文件,并用第三方参数为其设置权限

O_EXCL:

如果使用O_CREATE时文件存在,则可返回错误消息。

这一参数可测试文件是否存在。

此时open是原子操作,防止多个进程同时创建同一个文件

O_NOCTTY:

使用本参数时,若文件为终端,那么该终端不会成为调用open()的进程的控制终端

O_TRUNC:

若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0

O_APPEND:

以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,将写入的数据添加到文件的末尾

perms

被打开文件的存取权限

可以用一组宏定义:

S_I(R/W/X)(USR/GRP/OTH)

其中R/W/X分别表示读/写/执行权限

USR/GRP/OTH分别表示文件的所有者/文件所属组/其他用户

(例如,S_IRUSR|S_IWUSR表示设置文件所有者的可读可写属性,八进制表示法中0600也表示同样的权限)

函数返回值

成功:

返回文件描述符

失败:

-1

close()函数格式

所需头文件

#include

函数原型

intclose(intfd)

函数传入值

fd:

文件描述符

函数返回值

0:

成功

-1:

出错

read()函数格式

所需头文件

#include

函数原型

ssize_tread(intfd,void*buf,size_tcount)

函数传入值

fd:

文件描述符

buf:

指定存储器存放读出数据的缓冲区

count:

指定读出的字节数

函数返回值

成功:

实际读出的字节数

0:

已到达文件尾

-1:

出错

 

write()函数格式

所需头文件

#include

函数原型

ssize_tread(intfd,void*buf,size_tcount)

函数传入值

fd:

文件描述符

buf:

指定存储器写入数据的缓冲区

count:

指定写入的字节数

函数返回值

成功:

实际读出的字节数

0:

已到达文件尾

-1:

出错

 

lseek()函数格式

所需头文件

#include

#include

函数原型

off_tlseek(intfd,off_toffset,intwhence)

 

函数传入值

fd:

文件描述符

offset:

偏移量,从起始位置所需要移动的距离,单位是字节,可正可负(向前移,向后移)

whence:

当前位置的基点

SEEK_SET:

当前位置为文件的开头,新位置为偏移量

SEEK_CUR:

当前位置为文件指针的位置,新位置为当前位置加上偏移量

SEEK_END:

当前位置为文件的结尾,新位置为文件大小加上偏移量大小

函数返回值

成功:

文件的当前位移

-1:

出错

 

fcntl()函数语法格式

所需头文件

#include

#include

#include

函数原型

intfcntl(intfd,intcmd,struckflock*lock)

函数传入值

fd

文件描述符

cmd

F_DUPFD:

复制文件描述符

F_GETFD:

获得fd的close-on-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,设置记录锁的具体状态

struckflock

{

shortl_type;//F_RDLCK读取锁(共享锁),F_WRLCK写入锁

(排斥锁),F_UNLCK解锁

off_tl_start;//加锁区域在文件中的相对位移量(字节),与l_whence值一起决定加锁区域的起始位置

shortl_whence;//相对位移量的起点,取值同lseek的whence

off_tl_len;//加锁区域的长度

pid_tl_pid;//进程id

}

函数返回值

成功:

0

出错:

-1

 

select()函数格式

所需头文件

#include

#include

#include

函数原型

intselect(intnumfds,fd_set*readfds,fd_set*writefds,fd_set*exeptfds,structtimeval*timeout)

 

函数传入值

numfds:

该参数值为需要监视的文件描述符的最大值加1

readfds:

由select()监视的读文件描述符集合

writefds:

由select()监视的写文件描述符集合

exeptfds:

由select()监视的异常处理文件描述符集合

 

timeout

NULL:

永远等待,直到捕捉到信号或文件描述符已准备好为止

具体值:

strucktimeval类型的指针,若等待了timeout时间还没有检测到任何文件描述符准备好,就立即返回

0:

从不等待,测试所有指定的文件描述符并立即返回

函数返回值

成功:

准备好的文件描述符

出错:

-1

超时:

0

 

select()文件描述符处理函数

FD_ZERO(fd_set*set)

清除一个文件描述符集

FD_SET(intfd,fd_set*set)

将一个文件描述符加入文件描述符集中

FD_CLR(intfd,fd_set*set)

将一个文件描述符从文件描述符集中清除

FD_ISSET(intfd,fd_set*set)

如果文件描述符fd为fd_set集中的一个元素,则返回非零值,可以用于测试调用select()后文件描述符集中的哪个文件描述符是否有变化

注:

select()函数中的timeout是一个structtimeval类型的指针,结构体结构如下:

structtimeval

{

longtv_sec;//秒数

longtv_unsec;//微秒数

}

 

poll()函数格式

所需头文件

#include

#include

函数原型

intpoll(structpollfd*fds,intnumfds,inttimeout)

函数传入值

fds:

structpollfd结构的指针,用于描述需要对哪些文件的哪些类型的操作进行监控

structpollfd

{

intfd;//需要监听的文件描述符

shortevents;//需要监听的事件

shortrevents;//已发生的事件

}

events成员描述需要监听哪些类型的事件,可以用以下几种标志来描述:

POLLIN:

文件中有数据可读

POLLPRI:

文件中有紧急数据可读

POLLOUT:

可以向文件写入数据

POLLERR:

文件中出现错误

POLLHUP:

与文件的连接被断开,只限于输出

POLLNVAL:

文件描述符是不合法的,即它并没有指向一个成功打开的文件

numfds:

需要监听的文件个数,即第一个参数所指向的数组中的元素数目

timeout:

表示poll阻塞的超时时间。

如果该值小于等于0,则表示无限等待

函数返回值

成功:

返回大于0的值,表示时间发生的pollfd结构的个数

0:

超时

-1:

出错

串口的设置主要是设置structtermios结构体的各成员值,结构体结构如下:

#include

structtermios

{

unsignedshortc_iflag;//输入模式标志

unsignedshortc_oflag;//输出模式标志

unsignedshortc_cflag;//控制模式标志

unsignedshortc_lflag;//本地模式标志

unsignedcharc_line;//线路规程

unsignedcharc_cc[NCC];//控制特性

speed_tc_ispeed;//输入速度

speed_tc_ospeed;//输出速度

}

 

c_cflag支持的常量名称

EXTA

外部时钟率A

EXTB

外部时钟率B

CSIZE

数据位的位掩码

CS5

5个数据位

CS6

6个数据位

CS7

7个数据位

CS8

8个数据位

CSTOPB

2个停止位(不设置则默认1个停止位)

CREAD

接收使能

PARENB

校验位使能

PARODD

使用奇校验而不使用偶校验

HUPCL

最后关闭时挂线(放弃DTR)

CLOCAL

本地连接(不改变端口所有者)

CRTSCTS

硬件流控

 

c_iflag支持的常量名称

IGNPAR

忽略奇偶校验错误

PARMRK

奇偶校验错误掩码

ISTRIP

裁减掉第8位比特

IXON

启动输出软件流控

IXOFF

启动输入软件流控

IXANY

允许输入任意字符可以重新启动输出(默认为输入起始字符才重启输出)

IGNBRK

忽略输入终止条件

BRKINT

当检测到输入终止条件时发送SIGINT信号

INLCR

将接收到的NL(换行符)转换为CR(回车符)

IGNCR

忽视接收到的CR(回车符)

ICRNL

将接收到的CR(回车符)转换为NL(换行符)

IUCLC

将接收到的大写字符映射为小写字符

IMAXBEL

当输入队列满时响铃

 

c_oflag支持的常量名称

OPOST

启用输出处理功能,如果不设置该标志则其它标志都被忽略

OLCUC

将输出中的大写字符转换成小写字符

ONLCR

将输出中的换行符转换成回车符

ONOCR

如果当前列号为0,则不输出回车符

OCRNL

将输出中的回车符转换成换行符

ONLRET

不输出回车符

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,则控制字符(制表符、换行符等)会显示成”^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

中断控制字符,对应组合键为”Ctrl+C”

VQUIT

退出操作符,对应组合键为”Ctrl+Z”

VERASE

删除操作符,对应键为”Backspace”

VKILL

删除行符,对应组合键为”Ctrl+U”

VEOF

文件结尾符,对应组合键为”Ctrl+D”

VEOL

附加行结尾符,对应键为”Carriagereturn(CR)”

VEOL2

第二行结尾符,对应键为”Linefeed”

VMIN

指定最少读取的字符数

VTIME

指定读取的每个字符之间的超时时间

设置串口属性的基本流程

保存原先串口配置

if(tcgetattr(fd,&old_cfg)!

=0)

{

perror(“tcgetattr”)

return-1;

}

激活选项

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_cflag&=~PARODD;

new_cfg.c_iflag|=INPCK;

设置停止位

new_cfg.c_cflag&=~CSTOPB;

new_cfg.c_cflag|=CSTOPB;

设置最少字符和等待时间

new_cfg.c_cc[VTIME]=0;

new_cfg.c_cc[VMIN]=0;

清除串口缓冲

inttcdrain(intfd);//使程序阻塞,直到输出缓冲区的数据全部发送完毕

inttcflow(intfd,intaction);//用于暂停或重新开始输出

inttcflush(intfd,intqueue_selector);//用于清空输入/输出缓冲区

激活配置

tcsetattr(intfd,intoptional_actions,conststructtermios*termios_p);

注:

tflush()函数中queue_selector取值:

TCIFLUSH:

对接收到而未被读取的数据进行清空处理。

TCOFLUSH:

对尚未传送成功的输出数据进行清空处理。

TCIOFLUSH:

包括前两种功能,即对尚未处理的输入/输出数据进行清空处理。

optional_actions取值:

TCSANOW:

配置的修改立即生效。

TCSADRAIN:

配置的修改在所有写入fd的输出都传输完毕之后生效。

TCSAFLUSH:

所有已接收但未读入的输入都将在修改生效之前被丢弃。

 

fopen函数格式

所需头文件

#include

函数原型

FILE*fopen(constchar*path,constchar*mode)

函数传入值

path:

包含要打开的文件路径及文件名

 

mode:

文件打开状态

r/rb

打开只读/可读写文件,该文件必须存在

r+/r+b

w/wb

打开只写/可读写文件,若文件存在则文件长度清为0,即会擦写文件以前的内容;若不存在则建立该文件

w+/w+b

a/ab

以附加方式打开只写/可读写文件。

若文件不存在,则会建立该文件;如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留

a+/a+b

函数返回值

成功:

指向FILE的指针

失败:

NULL

 

fdopen()函数格式

所需头文件

#include

函数原型

FILE*fdopen(intfd,constchar*mode)

函数传入值

fd:

文件描述符

mode:

见上表

函数返回值

成功:

指向FILE的指针

失败:

NULL

 

freopen()函数格式

所需头文件

#include

函数原型

FILE*freopen(constchar*path,constchar*mode,FILE*stream)

函数传入值

path:

包含要打开的文件名及文件路径

mode:

见上表

stream:

已打开的文件指针

函数返回值

成功:

指向FILE的指针

失败:

NULL

 

fclose()函数格式

所需头文件

#include

函数原型

FILE*fclose(FILE*stream)

函数传入值

stream:

已打开的文件指针

函数返回值

成功:

0

失败:

EOF

 

fread()函数格式

所需头文件

#include

函数原型

size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)

函数传入值

ptr:

存放读入记录的缓冲区

size:

读取的记录大小

nmemb:

读取的记录数

stream:

要读取的文件流

函数返回值

成功:

返回实际读取到的nmemb数目

失败:

EOF

 

fwrite()函数格式

所需头文件

#include

函数原型

size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream)

函数传入值

ptr:

存放写入记录的缓冲区

size:

写入的记录大小

nmemb:

写入的记录数

stream:

要写入的文件流

函数返回值

成功:

返回实际写入到的nmemb数目

失败:

EOF

 

字符输入函数格式

所需头文件

#include

函数原型

intgetc(FILE*stream)

intfgetc(FILE*stream)

intgetchar(void)

函数传入值

stream:

要输入的文件流

函数返回值

成功:

下一个字符

失败:

EOF

 

字符输出函数格式

所需头文件

#include

函数原型

intputc(intc,FILE*stream)

intstreamutc(intc,FILE*stream)

intputchar(intc)

函数返回值

成功:

字符c

失败:

EOF

 

行输入函数格式

所需头文件

#include

函数原型

char*gets(char*s)

intfgets(char*s,intsize,FILE*stream)

函数传入值

s:

要输入的字符串

size:

输入的字符串长度

stream:

对应的文件流

函数返回值

成功:

s

失败:

EOF

 

行输出函数格式

所需头文件

#include

函数原型

intputs(constchar*s)

intstreamuts(char*s,FILE*stream)

函数传入值

s:

要输入的字符串

stream:

对应的文件流

函数返回值

成功:

s

失败:

EOF

 

格式化输出函数格式1

所需头文件

#include

函数原型

intprintf(constchar*format,...)

intstreamrintf(FILE*stream,constchar*format,...)

intsprintf(char*buf,constchar*format,...)

函数传入值

format:

记录输出格式

stream:

文件流

buf:

记录输出缓冲区

函数返回值

成功:

输出字符数(sprintf返回存入数组中的字符数)

失败:

NULL

 

格式化输出函数格式2

所需头文件

#include

#include

函数原型

intvprintf(constchar*format,va_listarg)

intvstreamrintf(FILE*stream,constchar*format,va_listarg)

intvsprintf(char*buf,constchar*format,va_listarg)

函数传入值

format:

记录输出格式

stream:

文件流

buf:

记录输出缓冲区

arg:

相关命令参数

函数返回值

成功:

输出字符数(sprintf返回存入数组中的字符数)

失败:

NULL

 

格式化输入函数格式

所需头文件

#include

函数原型

intscanf(constchar*format,...)

intfscanf(FILE*stream,constchar*format,...)

intsscanf(char*buf,constchar*form

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

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

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