套接口和标准io
2010-09-04 13:43
148 查看
fdopen 函数,open可以重任何一个描述字创建一个标准i/o流
fdopen(int filders,const chat *mode); 将文件描述符转换为文件指针。
标准io的3类缓冲:
full buffering,只有在出现缓冲区满,进程显示调用fflush,或者进程调用exit终止自身,通常的大小是8192。
line buffering 只有在碰到换行符的时候,进程调用fflush或者调用exit函数来终止自身。
unbuffering,每次调用标准io函数输出函数都发生io。
标准io的规则:
标准错误输出总是不缓冲。
标准输入和标准输出完全缓冲,除非是终端设备。
所有的其他的io流都是完全缓冲,除非是终端设备。
/dev/poll接口:
使用步骤:
1:打开/dev/poll。
2:初始化一个pollfd结构。
3:调用write函数在/dev/poll设备上写这个结构数组一把它传递给内核。
struct dvpoll
{
struct pollfd *dp_fds;//指向一个缓冲区,在调用ioctl时返回时存放
//一个pollfd结构。
int dp_nfds;//缓冲区的大小;
int dp_timeout;//当为0的时候,就是非阻塞,但为-1的时候,没有
//设置超时。
};
struct pollfd
{
int fd;//描述字,sockfd,比如
short events;//request events to watch
short revents;//returned events witnessed
};
events:
POLLIN
有数据可读。
POLLRDNORM
有普通数据可读。
POLLRDBAND
有优先数据可读。
POLLPRI
有紧迫数据可读。
POLLOUT
写数据不会导致阻塞。
POLLWRNORM
写普通数据不会导致阻塞。
POLLWRBAND
写优先数据不会导致阻塞。
POLLMSG
SIGPOLL 消息可用。
此外,revents域中还可能返回下列事件:
POLLER
指定的文件描述符发生错误。
POLLHUP
指定的文件描述符挂起事件。
POLLNVAL
指定的文件描述符非法。
成功时,poll返回revents 域不为0的文件描述符的个数;如果超时前没有发生任何事件,poll返回0,失败返回-1,并设置errno为下列值之一:
一个或多个结构体中指定的文件描述符无效。
EFAULT
fds指针指向的地址超出进程的地址空间。
EINTR
请求的事件之前产生一个信号,调用可以重新发起。
EINVAL
nfds参数超出PLIMIT_NOFILE值。
ENOMEM
可用内存不足,无法完成请求。)
fdopen(int filders,const chat *mode); 将文件描述符转换为文件指针。
标准io的3类缓冲:
full buffering,只有在出现缓冲区满,进程显示调用fflush,或者进程调用exit终止自身,通常的大小是8192。
line buffering 只有在碰到换行符的时候,进程调用fflush或者调用exit函数来终止自身。
unbuffering,每次调用标准io函数输出函数都发生io。
标准io的规则:
标准错误输出总是不缓冲。
标准输入和标准输出完全缓冲,除非是终端设备。
所有的其他的io流都是完全缓冲,除非是终端设备。
/dev/poll接口:
使用步骤:
1:打开/dev/poll。
2:初始化一个pollfd结构。
3:调用write函数在/dev/poll设备上写这个结构数组一把它传递给内核。
struct dvpoll
{
struct pollfd *dp_fds;//指向一个缓冲区,在调用ioctl时返回时存放
//一个pollfd结构。
int dp_nfds;//缓冲区的大小;
int dp_timeout;//当为0的时候,就是非阻塞,但为-1的时候,没有
//设置超时。
};
struct pollfd
{
int fd;//描述字,sockfd,比如
short events;//request events to watch
short revents;//returned events witnessed
};
events:
POLLIN
有数据可读。
POLLRDNORM
有普通数据可读。
POLLRDBAND
有优先数据可读。
POLLPRI
有紧迫数据可读。
POLLOUT
写数据不会导致阻塞。
POLLWRNORM
写普通数据不会导致阻塞。
POLLWRBAND
写优先数据不会导致阻塞。
POLLMSG
SIGPOLL 消息可用。
此外,revents域中还可能返回下列事件:
POLLER
指定的文件描述符发生错误。
POLLHUP
指定的文件描述符挂起事件。
POLLNVAL
指定的文件描述符非法。
成功时,poll返回revents 域不为0的文件描述符的个数;如果超时前没有发生任何事件,poll返回0,失败返回-1,并设置errno为下列值之一:
一个或多个结构体中指定的文件描述符无效。
EFAULT
fds指针指向的地址超出进程的地址空间。
EINTR
请求的事件之前产生一个信号,调用可以重新发起。
EINVAL
nfds参数超出PLIMIT_NOFILE值。
ENOMEM
可用内存不足,无法完成请求。)
相关文章推荐
- IO接口,序列化,标准传输格式JSON
- 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
- 套接口和标准IO
- IO接口标准(3):HCSL和LPHCSL
- Android Media相关标准接口
- 关于MIPI CSI-2 接口标准的资料翻译
- IO端口和IO内存的区别及分别使用的函数接口
- 使用c++标准io解析csv
- 标准io
- Linux文件---标准IO概述
- linux基础——linux下多路IO复用接口之select/poll
- Linux操作系统-标准IO库(4)
- Apache Mina的IoService接口学习笔记
- linux函数代码操练---文件操作-----标准IO库中的其他函数
- 《C++ Primer》 第08章 标准 IO 库 | Good !
- Regmap 框架:简化慢速IO接口优化性能【转】
- 安卓学习第十二天:接口,接口的使用,异常,异常处理,IO
- openssl之BIO系列之1---抽象的IO接口
- IO标准库类型和头文件
- (转帖)PS2接口标准及嵌入式编程