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

Posted 52sunny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boa研究学习:最开始基本的一些linux编程相关的知识,希望对你有一定的参考价值。

开始对嵌入式常用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) == NULLif(errno == EANGE)
            perror(...);
        else if (errno == EANGE) 
            perror(...);
        else
            perror(...);
        exit(1);
    

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

以上是关于boa研究学习:最开始基本的一些linux编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux最常用的基础命令 下篇

深度学企业linux awk命令详解与应用(下篇)

深度学企业linux awk命令详解与应用(下篇)

从零开始学深度学习编译器十七,MLIR ODS要点总结下篇

从零开始学深度学习编译器十七,MLIR ODS要点总结下篇

从零开始学深度学习编译器十七,MLIR ODS要点总结下篇