代码拉取完成,页面将自动刷新
#IOplus IO扩展库
一个简单的IO转调库。 目前很多软件编写的时候,其文件操作部分都是基于C标准库或者系统API函数来实现的。 这个库的目的就是扩展这些函数的具体实现,以便于添加更多的功能。例如使得fopen支持http协议,打开网络文件等。
在linux下,目前实现了以下函数的转调操作。
#include <fcntl.h>
/* 成功返回文件描述符, 失败返回-1 */
int open(const char *pathname, int oflag, ... /* mode_t mode */);
#include <unistd.h>
/* 成功返回0, 失败返回-1 */
int close(int filedes);
/* 成功返回新的文件偏移量,出错返回-1 */
off_t lseek(int filedes, off_t offset, int whence);
/* 成功则返回读取到的字节数,若已到文件的结尾返回0,出错返回-1 */
ssize_t read(int filedes, void *buf, size_t nbytes);
/* 成功则返回写入的字节数,出错返回-1 */
ssize_t write(int filedes, const void *buf, size_t nbytes);
/* 成功则返回新的文件描述符,出错返回-1 */
int dup(int filedes);
int dup2(int fileds, int filedes2);
/* 成功返回0,失败返回-1 */
int fsync(int filedes); /* 刷filedes指代的文件的缓存到磁盘 */
int fdatasync(int filedes); /* 与fsync类似,但只刷数据,不刷属性 */
void sync(void); /* 刷所有脏的缓存 */
在example
目录下有一个iop_custom.c
的文件,里面实现了一些iop_xxx
的函数。在这里你可以修改其中的实现来达到自己的目的。
如果你在这里需要调用原本的IO函数,请使用iop_real_xxx
的调用。其中xxx
指open``close
...等。在调用这些原本的IO函数前,请调用一次iop_init
函数。
iop_init
函数返回NULL
表示成功,否则表示出错。错误信息在返回的const char*
指针指向的字符串中。
暂时没有实现create
函数,因为其可以使用open
函数来替代。
你可以把所有源代码包含在你的工程中一起编译,或者使用libs
目录下的SConstruct
文件来编译出静态库。如果你这样做,请在生成你的项目的时候,链接上dl
库。
如果你想使用动态库,那么使用libs
目录下编译出来的libioplus.so
文件即可。
(备注:SConstruct
文件是scons
工具使用的配置文件,相当于make
工具使用的Makefile
文件)
windows下暂时还未实现。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。