Tinyhttpd 源码中关于 color.cgi 脚本的理解
2017-03-01 11:39
471 查看
这几天看了一下Tinyhttpd源码,下面简单记录一下自己遇到的问及笔记吧!首先在我是在ubuntu16.04下进行的,从别人github上fork来的Tinyhttpd源码在此平台下不能直接使用,先说一下我fork的源码的问题:
1. accept_request(void*arg), 作者可能想兼顾线程调用此函数时传递函数参数,可是在accept_request(…)中引用函数参数时有问题:
源码是直接这样用:int client = (intptr_t) arg; 然而我在ubuntu下查到intptr_t (/usr/include/stain.h) 定义为:
所以这里我改为 int client = *((int *)arg);
2. 还要修改htdocs/ 的color.cgi, check.cgi权限
sudo chmod 764 color.cgi check.cgi
3. 关于color.cgi 脚本, 第一句关于解释器选择, 使用which perl,可以找到perl所在位置,我的是在/usr/bin/perl,所以改为
#!/usr/local/bin/perl -Tw
OK! 这样就可以正常运行了
正式说一下color.cgi脚本, 源码使用perl脚本写的,由于perl强大的字符串处理能力,所以程序写的非常简洁。
这里
If( defined($cgi->param(‘color’) )
$color = $cgi->param(‘color’);
这里用的是perl的参数-值,通过param方法获取color参数的值,同理$cgi-param() 表示获取所有参数
print $cgi->start_html(-title => uc($color),
-BGCOLOR => $color);
print $cgi->h1("This is $color");
print $cgi->end_html;这几句是设置输出html格式的数据,其中title为color参数的值对应的大写字符串, BGCOLOR设置背景颜色为color的值
1. accept_request(void*arg), 作者可能想兼顾线程调用此函数时传递函数参数,可是在accept_request(…)中引用函数参数时有问题:
源码是直接这样用:int client = (intptr_t) arg; 然而我在ubuntu下查到intptr_t (/usr/include/stain.h) 定义为:
所以这里我改为 int client = *((int *)arg);
2. 还要修改htdocs/ 的color.cgi, check.cgi权限
sudo chmod 764 color.cgi check.cgi
3. 关于color.cgi 脚本, 第一句关于解释器选择, 使用which perl,可以找到perl所在位置,我的是在/usr/bin/perl,所以改为
#!/usr/local/bin/perl -Tw
OK! 这样就可以正常运行了
正式说一下color.cgi脚本, 源码使用perl脚本写的,由于perl强大的字符串处理能力,所以程序写的非常简洁。
#!/usr/bin/perl -Tw use strict; #为了帮助我们寻找错误拼写造成的错误 use CGI; #通过use关键字引入CGI模块 my($cgi) = new CGI; #创建一个新的CGI对象 print $cgi->header; #输出CGI的标准头部信息 my($color) = "blue"; #创建变量color并默认为blue $color = $cgi->param('color') if defined $cgi->param('color'); print $cgi->start_html(-title => uc($color), -BGCOLOR => $color); print $cgi->h1("This is $color"); print $cgi->end_html;
这里
$color = $cgi->param('color') if defined $cgi->param('color');按照C的写法应该这样写就好理解了
If( defined($cgi->param(‘color’) )
$color = $cgi->param(‘color’);
这里用的是perl的参数-值,通过param方法获取color参数的值,同理$cgi-param() 表示获取所有参数
print $cgi->start_html(-title => uc($color),
-BGCOLOR => $color);
print $cgi->h1("This is $color");
print $cgi->end_html;这几句是设置输出html格式的数据,其中title为color参数的值对应的大写字符串, BGCOLOR设置背景颜色为color的值
相关文章推荐
- 一篇很好的关于mysqld_safe脚本源码解读的文章,收藏了!!
- boa 源码分析(2)--关于Boa和CGI
- 关于图片镂空和bitblt及setbkcolor等的理解
- 关于 CGI,Fastcgi和php-fpm 理解
- 关于Android源码中|= (m & STATIC_VALUE) !=0 的理解
- spring深入理解二(关于容器工作源码)
- 《ZHU, MAI, SHAO: SINGLE IMAGE DEHAZING USING COLOR ATTENUATION PRIOR》关于此文的理解与实现
- 关于php中携带的php-fpm和php-cgi的理解纠正
- 关于数组的一些个人理解和源码
- 关于Linux脚本中的第一条语句'#!***'的理解
- [Unity3D]手机3D游戏开发:关于自定义Joystick的相关设置和脚本源码
- boa 源码分析(2)--关于Boa和CGI
- 关于脚本语言的理解(转)
- boa源码分析(2)--关于Boa和CGI
- 【common-lang源码阅读】Conversion类中关于Msb0和Lsb0的理解
- 关于CGI、fastcgi、PHP-CGI、PHP-FPM的理解
- 脚本语言 解释性语言 关于PHP,asp,jsp是解释性语言的理解 java不是脚本语言,jsp是
- 关于Retrofit2.0源码的学习和理解
- boa 源码分析(2)--关于Boa和CGI