序言
开发nginx http模块时,有时候需要从指定的文件读取信息,这个时候,如果是新手,则肯定用操作系统文件系统函数来操作文件,比如用fopen打开文件,用fseek,fread等读取文件信息,最后用fclose关闭文件。这样操作文件也是可以工作的,但是如果代码中间有return的时候,我们需要确保打开的文件关闭,否则会造成文件句柄没有关闭,资源浪费,而且这种方式和nginx的异步回调风格有点不符。所以我们可以利用nginx提供的文件函数来操作文件,而在请求结束的时候一并关闭打开的文件。
使用nginx自带的机制操作文件
参考fopen函数,那么肯定需要用到nginx的file结构体(src/core/ngx_file.h )。结构如下
struct ngx_file_s {
ngx_fd_t fd;
ngx_str_t name;
ngx_file_info_t info;
off_t offset;
off_t sys_offset;
ngx_log_t *log;
#if (NGX_HAVE_FILE_AIO)
ngx_event_aio_t *aio;
#endi