c

  • 最近看了下nginx源码。有点头大。首先是我没用过nginx,第二是我不会c语言。

    因此想借着看nginx源码学习下c语言。之所以学习nginx是因为nginx非常实用,而且代码写得好,并且已经有不少的源码分析博客。不会的话至少有个参考。

    nginx有模块这个概念,可以自定义模块,这是入口点。

    nginx模块的基本原理我总结了一下,基本就是靠用函数当参数,在特定地方调用函数。

    写过js的一定对这个非常熟悉。因为js的cps风格就是不断的用函数做参数进行回调的。

    nginx也可以叫回调,反正也是基于epoll和kqueue的嘛。

    学习了一下c,发现c实现回调函数是用函数指针的。整个nginx使用

  • 今天尝试写一个模块

    ngx_http_module_t

    这里面初始化所有8个成员全部是函数指针,同样是可选的,用NULL放弃使用回调。

    create_loc_conf

    此函数接受的参数是ngx_conf_t *, 也就是nginx配置结构体的指针

    返回结果会被放在ctx->loc_conf[mi]中,mi是module index的缩写

    返回一个有字符串和整数的结构体,

    作用是告诉总的配置文件, 我需要一个啥结构体, 保存哪些信息

    这个函数貌似不重要..不管了

    merge_loc_conf

    可以不写,和上面一样,没啥用

    ngx_command_t

    struct ngx_command_s
  • 我发现c语言学习环境极为恶劣, 有问题上网找, 首先c关键词太弱..而且c语言的博客根本没法看, 一段代码基本是不能跑的, 如果有缩进我都已经感激涕零了. 不得不感叹还是js好啊, 毕竟会js的文章不会太丑.

    所以我写c有关的学习博客, 都只求代码美观, 能直接运行.

    socket

    socket方法是用来获取一个文件描述符的。

    int fd = socket(PF_INET, SOCK_STREAM, 0);

    SOCK_STREAM表示流式数据,也就是tcp协议,udp的参数是SOCK_DGRAM.全程叫datagram,数据豌豆,也就是我们常说的数据报啦。

    这下我终于明白为啥nodejs中使

  • 今天尝试写一个模块

    ngx_http_module_t

    这里面初始化所有8个成员全部是函数指针,同样是可选的,用NULL放弃使用回调。

    create_loc_conf

    此函数接受的参数是ngx_conf_t *, 也就是nginx配置结构体的指针

    返回结果会被放在ctx->loc_conf[mi]中,mi是module index的缩写

    返回一个有字符串和整数的结构体,

    作用是告诉总的配置文件, 我需要一个啥结构体, 保存哪些信息

    这个函数貌似不重要..不管了

    merge_loc_conf

    可以不写,和上面一样,没啥用

    ngx_command_t

    struct ngx_command_s
  • 最近看了下nginx源码。有点头大。首先是我没用过nginx,第二是我不会c语言。

    因此想借着看nginx源码学习下c语言。之所以学习nginx是因为nginx非常实用,而且代码写得好,并且已经有不少的源码分析博客。不会的话至少有个参考。

    nginx有模块这个概念,可以自定义模块,这是入口点。

    nginx模块的基本原理我总结了一下,基本就是靠用函数当参数,在特定地方调用函数。

    写过js的一定对这个非常熟悉。因为js的cps风格就是不断的用函数做参数进行回调的。

    nginx也可以叫回调,反正也是基于epoll和kqueue的嘛。

    学习了一下c,发现c实现回调函数是用函数指针的。整个nginx使用