boa研究学习(1):最开始基本的一些linux编程

本文介绍了对嵌入式web服务器Boa的学习,从初始化、文件权限、重定向输入输出、记录时间、获取配置参数等方面进行探讨。作者强调了在Boa中对安全性和效率的关注,以及在编程中使用的一些关键函数,如umask、dup2、time和getopt等。后续将深入讨论配置文件读取机制,采用flex和yacc工具。
摘要由CSDN通过智能技术生成

开始对嵌入式常用web server—-boa的学习。
分4步走吧
1 init部分,牵涉到一些基本linux环境下的编程,顺带复习巩固
2 事件驱动部分
3 一些结构性技巧
4 周边技术扩展

今天从第一部分开始把,按照文档格式,一步一步走
一、文件权限设置,umask,牵涉到了基本的linux编程,贴个链接
umask
主要是控制下进程产生文件的权限,没有什么大的值得注意的地方,或者说,本来嵌入式web server也是做兼容控制比较多,很少用来做网站,对于安全方面的要求就是少之又少了。

二、重定向标准输入输出,将本进程的标准输入和标准输出重定向到黑洞—/dev/null之中
当然牵涉到一些基本的文件操作编程了
open,dup2,STDIN_FILENO,STDOUT_FILENO,
同样贴个链接,给自己个回顾,也给将来的初学者一个方便
dup2
将输入输出流重定向到黑洞,就是让整个程序通过log来查看运行信息了。
顺便提一嘴,这其中牵涉到了linux的文件系统知识,进程创建时的一些细节知识,给自己留个提醒,以后有机会做进一步研究,前面虽然看过,但是都是走马观花。

三、记录当前时间,用了time函数,注释上说,市委了更新时间戳,log_error_time会用到。

四、从命令行获取配置参数,boa会从命令行和配置文件获取启动参数,编程的时候的基本技巧。
getopt

扩展开的只是就是进程创建的时候的参数传递过程,抽个空去研究下,也是略有了解,做个补完吧。

五、设置server root,根目录设置,fixup_server_root()
设置从命令行获取到的根目录,如果没有获取到,那就直接设置为默认目录。
其中有个蛮有意思的函数,normalize_path();将相对路径,转换为绝对路径。用了一些函数的组合获取到绝对路径,作为菜单,略微分析下。

首先直接判断路径名是否直接以”/”开头,如果以这个开头,且文件存在,判定是绝对路径直接返回了。

if(path[0]=='/') {
    endpath = strdup(path);
}

否则的话,就用getcwd获取当前目录,这其中使用了errno对错误返回类型的判断,考虑还是比较细致的,只是感觉他的编程风格不喜欢,还是喜欢在所有if后面跟上括号,防止更改时候出现if匹配上的错误。

else {
    if(getcwd(dirbuf, DIRBUF_SIZE) == NULL) {
        if(errno == EANGE)
            perror(...);
        else if (errno == EANGE) 
            perror(...);
        else
            perror(...);
        exit(1);
    }
}

剩下的就是一些基本操作,待续。。。。
下一篇将会介绍一个重点了,关于实战编程很重要的读取配置文件机制了,采用的是flex和yacc,前段时间研究过,下篇blog当做个科普了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值