PRIOMethods¶
文件描述符中使用的 I/O 方法表。
语法¶
#include <prio.h>
struct PRIOMethods {
PRDescType file_type;
PRCloseFN close;
PRReadFN read;
PRWriteFN write;
PRAvailableFN available;
PRAvailable64FN available64;
PRFsyncFN fsync;
PRSeekFN seek;
PRSeek64FN seek64;
PRFileInfoFN fileInfo;
PRFileInfo64FN fileInfo64;
PRWritevFN writev;
PRConnectFN connect;
PRAcceptFN accept;
PRBindFN bind;
PRListenFN listen;
PRShutdownFN shutdown;
PRRecvFN recv;
PRSendFN send;
PRRecvfromFN recvfrom;
PRSendtoFN sendto;
PRPollFN poll;
PRAcceptreadFN acceptread;
PRTransmitfileFN transmitfile;
PRGetsocknameFN getsockname;
PRGetpeernameFN getpeername;
PRGetsockoptFN getsockopt;
PRSetsockoptFN setsockopt;
};
typedef struct PRIOMethods PRIOMethods;
参数¶
file_type
表示的文件类型 (tos)。
close
关闭文件并销毁描述符。
read
将最多指定数量的字节读入缓冲区。
write
从缓冲区写入指定数量的字节。
available
确定可读取的字节数。
available64
与上一个字段相同,但为 64 位。
fsync
将文件的所有内存缓冲区刷新到永久存储。
seek
将文件指针定位到所需位置。
seek64
与上一个字段相同,但为 64 位。
fileInfo
获取有关打开文件的的信息。
fileInfo64
与上一个字段相同,但为 64 位。
writev
从缓冲区向量写入。
connect
连接到指定的网络地址。
accept
接受来自网络对等方的连接。
bind
将网络地址与文件描述符关联。
listen
准备侦听网络连接。
shutdown
关闭网络连接。
recv
接收最多指定数量的字节。
send
发送所有指定的字节。
recvfrom
接收最多指定数量的字节并报告网络源。
sendto
将字节发送到指定的网络地址。
poll
测试文件描述符以查看它是否已准备好进行 I/O。
acceptread
接受并从新的网络文件描述符读取。
transmitfile
将整个文件传输到指定的套接字。
getsockname
获取与文件描述符关联的网络地址。
getpeername
获取对等方的网络地址。
getsockopt
获取指定套接字选项的当前设置。
setsockopt
设置指定套接字选项的值。
描述¶
除非您正在实现一个层,否则您不需要了解方法表中列出的每个函数的类型声明。有关每个函数的信息,请参阅本文档中相应的函数描述。例如,PRIOMethods 中的 write
方法实现了 PR_Write 函数。有关类型定义详细信息,请参阅 prio.h
。
I/O 方法表提供了对文件描述符函数的过程访问。层实现者有责任在每个入口点(即 I/O 方法表中的每个函数)提供合适的函数。如果层不提供任何功能,它应该调用相同名称的下一层(较高)函数(例如,“close”方法将返回 fd->lower->method->close(fd->lower)
)。
并非方法表中的所有函数都对所有类型文件都实现了。例如,seek 方法对普通文件实现了,但对套接字则没有。在发生这种部分实现的情况下,该函数将返回错误指示,错误代码为 PR_INVALID_METHOD_ERROR
。