CGI编程完全手册(个人学习笔记)
CX-P使用手册

目录CX-Programmer –用户手册 ..................................................................................................... 页码第一章技术规范 (1)OMRON CX-Programmer (1)关于本手册 (1)CX-Programmer 特性 (2)系统要求 (5)安装 (5)帮助和如何获得帮助 (6)技术支持 (9)第二章快速启动指南 (10)启动CX-Programmer (10)“部分功能”和“完全功能”——许可证 (11)介绍CX-Programmer 工程 (11)CX-Programmer 环境 (11)使用CX-Programmer (20)总结 (31)第三章工程引用 (32)工程工作区 (32)程序节 (33)交叉引用报表 (35)地址引用工具 (36)输出窗口 (38)监视窗口 (38)选项和参数 (39)查找和替换 (45)属性 (49)在CX-Programmer 中使用Microsoft Windows 特性 (51)第四章参考 (62)PLC和工程 (62)符号 (63)程序编辑 (68)助记符程序编辑 (78)在线工作 (79)数据跟踪/时间图监视 (89)CX-Net 网络配置工具 (89)IO 表 (89)i第五章高级主题 (90)编写具有更好的维护性的程序 (90)在工程中复制信息 (90)和其它应用程序一起使用CX-Programmer (91)把程序转换为其它类型PLC 格式 (94)给PLC程序添加口令 (95)附录A 工具栏和键盘快捷键 (97)标准工具栏 (97)图表工具栏 (98)符号表工具栏 (98)插入工具栏 (99)PLC工具栏 (99)程序工具栏 (100)视图工具栏 (100)键盘快捷键 (101)词汇表 (104)iiOMRONCX-Programmer-用户手册OMRONCX-Programmer-用户手册第一章技术规范本章概括的叙述了CX-Programmer软件,说明了能使CX-Programmer 软件正常工作所要求的操作环境和最小配置的细节。
C++基础教程 Web 编程 网页浏览、CGI 架构图

C++基础教程 Web 编程 网页浏览、CGI 架构图
Web 编程 什么是 CGI ? [图片]通用网关接口(Common Gateway Interface),简称 CGI,是一组定义如何将信息在 Web 服务器和一个自定义脚 本之间交换的标准。
网页浏览
要了解 CGI 的概念,那我们先来看看,当我们点击超链
接来浏览特定的网页或 URL 时会发生什么。
[图片]您的浏览器连接到 HTTP Web 服务器,并且请 求 URL ,文件名。[图片]Web 服务器将会解析 URL, 并且会查找文件名。
如果找到所请求的文件,那么 Web 服务器会将该文件发送给
浏览器,否则它会发送一个错误信息表明您请求了一个错误
的文件。[图片]Web 浏览器的响应来自于 Web 服务器,并且 浏览器要显示所接收到的文件或者错误消息的响应。
[图片]目前 CGI 的规范是由 NCSA 维护的;NCSA 定义
CGI 如下:[图片]通用网关接口(CGI),是外部网关程序与
信息服务器(例如,HTTP 服务器)之间的接口标准。[图片] 目前应用的版本是 CGI /1.1;CGI/1.2 版本正在开发中。
然而,也可以以这样的方式来设置 HTTP 服务器:每 当在某个目录中的文件被请求时,该文件并不被发送回; 代替的是,这个请求作为一个程序来被执行,由该程序产 生输出,并被发送回给浏览器来显示。
嵌入式学习心得体会(精选8篇)

嵌入式学习心得体会(精选8篇)嵌入式学习心得体会篇1(4622字)从实习到现在搞嵌入式开发快一年了,蓦然回首好像一年过得挺快,挺顺利的。
细细品味,发现这一年还是有很多值得回忆和总结的东西。
至少这一年看书挺多,大概二十几本,当然和那些一年看一百多本书的人没法比,但是我已经超越了自己。
这是我大学毕业的第一年,初次走上社会,很想一展身手,可是.....其实也不用可是了,和很多朋友一样碰了很多钉子,现在我和老板的关系就挺一般的,只是我性格还不错。
呵呵~~,做优秀员工看来还得慢慢学。
今年最大的收获就是做了一个半项目,是在uClinux下面跑的。
半个是SNMP-Agent的实现,因为我去的时候snmpd已经跑起来了,我只是实现部分管理功能;一个是基于Web的管理系统,使公司的主打产品微波通信设备上网。
这个项目是我一手策划,一手实现(界面设计是一位女同事,很优秀的程序员),从中学到的东西也最多,感情不可谓不深。
SNMP即简单网络管理协议,其实一点都不简单。
在我所知的网络协议里面,它仅仅比OSI的CMIP简单一点,而CMIP直到现在还没得到广泛应用。
我们能够实现SNMP-Agent不能不感谢CarnegieMellon大学免费发布的ucd-snmp软件包。
它使得开发人员专注于实现对特定设备的管理功能。
我在项目中的工作主要是扩展MIB,实现相应的管理功能以及网络功能的扩展。
我们公司的MIB库比较庞大,但是程序运行还是挺快的。
因为ucd-snmp软件包中大量使用回调函数,而且它将MIB树以二叉树形式表示,但是每个结点不是单个的MIB结点,而是一个表,包括了多个结点。
回调函数和两层表示法的使用是操作快速的主要因素。
基于Web的管理系统我原本是打算在设备外实现SNMP-Manager 的功能,因为设备中已经嵌入了Agent。
这样管理人员可以在世界各地通过WWW登录公司的管理平台,实现对所有设备的管理。
但是老板想在设备中嵌入一个管理系统,可以通过www管理单个设备就行。
Perl学习笔记之CPAN使用介绍

Perl学习笔记之CPAN使⽤介绍authors这个⽬录包含许多⼦⽬录,每个贡献者⼀个。
⽐如,如果你想找 Lincoln Stein 那些写得⾮常好的 CGI 模块(现在是标准 Perl 版本的⼀部分了),并且你碰巧知道是他写了这些模块,那么你就可以到authors/Lincoln_stein ⽬录⾥看看。
如果你不知道是他写了这些模块,那么你可以到下⾯描述的 modules ⽬录⾥找。
doc这个⽬录保存所有风格的Perl⽂档,包括Perl的官⽅⼿册页的好⼏种不同的排列和格式,⽐如⽂本,HTML,PostScript,和Perl⾃⾝的 pod 格式。
modules这个⽬录包含⽤Perl或者Perl和C混合写成的模块。
ports * 这个⽬录包含源代码,有时候还有⼀些预编译好的可执⾏的Perl移植,主要针对那些在标准版本⾥并不直接⽀持的操作系统,或者某些很难⽤的编译器。
scripts * 这个⽬录包含少量从全世界各地发来的各种各样的Perl程序。
它们可以⽤做独⽴的程序,或者也可以⽤做例⼦。
⽬前,这⾥⾯还没有很多程序列出,不过,随着时间的推移,这个区域会变得越来越丰富。
Perl Power Tools project (Perl 万能⼯具箱,PPT)也放在这⾥。
PPT的⽬标是⽤Perl重新制作所有Unix 、⼯具。
⼤多数标准的已经完成了,另外还有有些不那么标准的也做完了。
src在这个⽬录⾥,你可以找到标准Perl发布版本的源程序。
实际上,是两个标准 Perl版本的源程序,⼀个标记着 stable(稳定版),另外⼀个是 devel (开发版)。
(该⽬录的索引页有详细解释。
)它们都只是相应版本的链接。
早我们写这些的时候,stable.tar.gz 是到 perl-5.6.0.tar.gz(通常的⽅案是:如果版本号的第⼆个数字是偶数,那么它就是正式版本,如果是奇数,那么是开发版。
后⾯的.tar.gz 后缀有时候是 .tgz,表⽰它是⼀个标准的互联⽹格式:GNU 压缩的tar归档,常称做“tarball”)的符号链接。
cognos 学习笔记

63byt56 邮箱1. 仪表板轴?2.饼图的表现形式3.自定义坐标轴4.超链接和图片怎么重叠2. 图标定位370,550,一个页面单个图表的时候,一般定位700,1100px. 表格定位:高度看情况。
宽度1100或10243. 当前日期-1,可类似表示为[FJSL_DW].[日期].[日] in( _add_days(current_date,-1))4. 日期字段显示:substring ([FJSL_DW].[日期].[日],1,4)+'年'+[FJSL_DW].[日期].[月]+substring ([FJSL_DW].[日期].[日],9,10)+'日'+[FJSL_DW].[日期].[周]5 . Mod(rownumber(),2)=1 或者 0,列表隔行换颜色,0是第一行有颜色,1是第二行有颜色;6. topCount([FJSL_DW].[住院病区].[病区代码],10,[住院收入])7.例子:case when [场所信息].[RIS 检查室].[检查室]='CT检查室1' then '64层xxxx'when [场所信息].[RIS 检查室].[检查室]='急诊CT' then '128排xxxx' when [场所信息].[RIS 检查室].[检查室]='新MRI01' then '飞利xxxx' when [场所信息].[RIS 检查室].[检查室]='CT检查室2' then '64层xxxx' when [场所信息].[RIS 检查室].[检查室]='新MRI02' then '西门xxxx' when [场所信息].[RIS 检查室].[检查室]='拍摄室3' then '西门xxxx' when [场所信息].[RIS 检查室].[检查室]='拍摄室9' then '西门xxxx' when [场所信息].[RIS 检查室].[检查室]='急诊DR' then '飞利xxxx' when [场所信息].[RIS 检查室].[检查室]='国内DR' then '岛津xxxx' when [场所信息].[RIS 检查室].[检查室]='移动DR' then '西门xxxx' when [场所信息].[RIS 检查室].[检查室]='乳腺检查室10' then 'GExxxx' when[场所信息].[RIS 检查室].[检查室]='移动DR2' then '移动xxxx' when[场所信息].[RIS 检查室].[检查室]='数字胃肠' then '数字xxxx'when[场所信息].[RIS 检查室].[检查室]='门诊CR' then '门诊xxxx'when[场所信息].[RIS 检查室].[检查室]='DSA室' then 'DSxxxx'when[场所信息].[RIS 检查室].[检查室]='门诊CT' then '门诊xxxx'when[场所信息].[RIS 检查室].[检查室]='口腔拍片室' then '口腔xxxx' else [场所信息].[RIS 检查室].[检查室] end8.调色板<RSClipboardFragment version="2.0"><chartPalette><chartColor value="#3C6494"/><chartColor value="#993333"/><chartColor value="#799244"/><chartColor value="#634D7E"/><chartColorvalue="#39869B"/><chartColor value="#C27535"/><chartColor value="#4978B1"/><chartColor value="#B34A47"/><chartColor value="#91AF53"/><chartColor value="#775D97"/><chartColor value="#46A1B9"/><chartColor value="#E78C41"/><chartColor value="#7E9BC8"/><chartColor value="#CA7E7D"/><chartColor value="#AEC683"/><chartColor value="#9B89B3"/><chartColor value="#7CBBCF"/></chartPalette></RSClipboardFragment>9.图注显示到图标底部:选定图注---属性--定位大小---绝对位置显示为否---才可以看到位置选项---选择底部10.y轴度量排序,先选择查询项,然后点y轴度量,在数据项里有个预排序11.横坐标星期排序,先排日期,在再选择星期排序,ok12.在柱状图上面显示数值,先选中图标中的系列,在图标标签位置----值---选择为---显示---值位置选择顶部外侧。
unix环境高级编程读书笔记

Unix环境高级编程读书笔记Unix环境高级编程是一本经典的计算机编程指南,它深入探讨了Unix 操作系统的各个方面,并提供了大量有关高级编程和系统级编程的知识。
在本文中,我将根据这本书的内容,为您撰写一份读书笔记,希望能够帮助您更深入地理解Unix环境的高级编程。
1. Unix环境概述Unix操作系统诞生于20世纪70年代初,在经过几十年的发展之后,成为了当今世界上最流行的操作系统之一。
Unix系统以其稳定性、可靠性和安全性而闻名,被广泛应用于服务器、工作站和嵌入式系统中。
Unix环境高级编程这本书就是帮助读者深入理解Unix操作系统的各个方面,包括文件I/O、进程控制、信号处理、线程和内存管理等内容。
2. 文件I/O文件I/O是Unix编程中的基础,Unix环境高级编程中详细介绍了文件描述符、标准I/O库、文件和目录操作等内容。
这些知识对于理解Unix系统中的文件系统操作非常重要,可以帮助开发人员更好地处理文件和目录,提高程序的效率和稳定性。
3. 进程控制Unix系统以进程为核心,Unix环境高级编程深入探讨了进程的创建、终止、信号处理、进程间通信等内容。
理解这些内容可以帮助开发人员编写更加健壮和高效的多进程程序,提高系统的并发能力和响应速度。
4. 线程和同步Unix环境高级编程还介绍了线程的创建、同步、互斥和条件变量等内容。
线程编程是Unix系统中的重要部分,了解这些知识可以帮助开发人员编写更加高效和安全的多线程程序,提高系统的并发能力和性能表现。
5. 内存管理Unix系统的内存管理也是非常复杂的,Unix环境高级编程对内存分配、共享内存、内存映射等内容进行了深入讲解。
理解这些知识可以帮助开发人员更好地管理系统内存,避免内存泄漏和内存碎片问题,提高系统的稳定性和性能。
总结回顾通过阅读Unix环境高级编程这本书,我对Unix系统的各个方面有了更深入的了解。
文件I/O、进程控制、线程和内存管理等内容让我受益匪浅,我相信这些知识对我的编程能力会有很大的提高。
程序员开发手册

程序员开发手册安全生产信息化管理系统》程序员开发手册1.概述目的:1.方便代码的交流和维护。
2.不影响编码效率,不与大众惯冲突。
3.使代码更美观,阅读更方便。
4.使代码逻辑更清晰,更易于理解。
范围:本手册适用于开发部全体人员,在软件项目开发的代码编写和后期维护阶段起作用。
警示:对于不符合编码规范的代码,必须在限期内修正。
逾期视为工作过失,部门主管或相关负责人视具体情况做出相关处理。
术语定义:1.匈牙利命名法已被禁用。
2.推荐使用帕斯卡(pascal)命名法或骆驼(Camel)命名法。
2.代码格式列宽:1.为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在一般显示频率下不得超过一显示屏,代码列宽控制在110字符左右。
2.系统中部分代码可以不遵循此原则,比如VIWFormItemDetail[]dv=(VIWFormItemDetail[]),sqlParams)。
3.SQL语句拼接、字符串拼接、函数参数名过长、判断语句过长的代码要遵循以上原则。
换行:1.当表达式超出或即将超出规定的列宽,一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。
例如:StringquerySql=“SELECTProjectId”+“,ProjectTitle”+“FROM Project”。
2.每一行上放置的语句避免超过一条。
3.当表达式超出或即将超出规定的列宽,遵循以下规则进行换行:1) 在逗号前换行。
2) 在操作符前换行。
3) 规则1优先于规则2.例如:StringBuilder querySql = new StringBuilder();("SELECT。
AS PK ");(",",",");("。
AS ISBNCode");在编写代码时,应该遵守一定的格式规范,以提高代码的可读性和可维护性。
Gambit学习笔记(2)(转帖)

Gambit学习笔记(2)(转帖)⼀.边界层边界层是指定与边或者⾯相邻区域的⽹格接点的距离,⽬的是控制⽹格密度,从⽽控制感兴趣区域计算模型的有⽤的信息量。
例如:在⼀个液体流管中,我们知道靠近壁⾯处的速度剃度⼤,⽽中⼼处的速度剃度⼩,为了使得壁⾯处的⽹格密⽽中⼼处的⽹格稀疏,我们就在壁⾯处加⼀边界层。
这样我们就能控制⽹个密度。
要定义⼀个边界层,你要定义以下参数:1)边界曾依附的边或者⾯2)指定边界层⽅向的⾯或者体3)第⼀列⽹格的⾼度4)相邻列之间的⽐例因⼦5)总列数,指定了边界层的深度同时,你也可以指定⼀个过度边界层。
要指定⼀个过度边界层,你需要定义以下参数(过度模式,过度的列数)1)⽣成边界层需要定义以下参数:i)size:包括指定第⼀列的⾼度和相邻列的⽐例因⼦ii)internal continuity :当在体的某个⾯上施加边界层时,gambit会把边界层印在与这个⾯相邻的所有⾯上,如果在体的两个或者更多的⾯上施加边界层,那么边界层就有可能重叠,internal continuity 这个参数就决定了边界层如何重叠当选择internal continuity 时,gambit不会在相邻的⾯上互相施加边界层否则就会在相邻的⾯上互相施加边界层具体可以看guide的图⽰:同时这个参数还影响施加了边界层的体可以采⽤何种⽅式划分⽹格corner shape :gambit 允许你控制conner(即边界层依附的的两条边的连接点处)附近区域⽹格的形状iii)Transition Characteristics需要定义以下两个参数:Transition pattern指的是边界层远离依附边或者⾯那⼀侧的节点的排布情况Number of transition rows这个列数肯定要⼩于前⾯指定的那个列数。
iv)Attachment Entity and Direction指定⽅向⾮常重要,可以通过⿏标和list 对话框来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CGI一.基本原理CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。
通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。
组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。
另一部分则是运行在服务器上的Cgi程序。
它们之间的通讯方式如下图:服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP 通信,我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。
服务器和CGI程序之间的通讯才是我们关注的。
一般情况下,服务器和CGI程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。
1.服务器将URL指向一个应用程序2.服务器为应用程序执行做准备3.应用程序执行,读取标准输入和有关环境变量4.应用程序进行标准输出对于Windows系统而言,还可以通过profile文件进行数据传输(如ini文件),但在这里不做研究。
环境变量在CGI中有着重要的地位!每个CGI程序只能处理一个用户请求,所以在激活一个CGI程序进程时也创建了属于该进程的环境变量。
二.环境变量对于CGI程序来说,它继承了系统的环境变量。
CGI环境变量在CGI程序启动时初始化,在结束时销毁。
当一个CGI程序不是被HTTP服务器调用时,它的环境变量几乎是系统环境变量的复制。
当这个CGI程序被HTTP服务器调用时,它的环境变量就会多了以下关于HTTP服务器、客户端、CGI传输过程等项目。
并且经过了URL编码。
ACCEPT:客户机所支持的MIME类型清单,内容如:”image/gif,image/jpeg”REQUEST_METHOD:它的值一般包括两种:POST和GET,但我们写CGI程序时,最后还要考虑其他的情况。
1.POST方法如果采用POST方法,那么客户端来的用户数据将存放在CGI进程的标准输入中,同时将用户数据的长度赋予环境变量中的CONTENT_LENGTH。
客户端用POST方式发送数据有一个相应的MIME类型(通用Internet邮件扩充服务:Multi-purpose Internet Mail Extensions)。
目前,MIME类型一般是:application/x-wwww-form-urlencoded,该类型表示数据来自HTML表单。
该类型记录在环境变量CONTENT_TYPE中,CGI程序应该检查该变量的值。
2.GET方法在该方法下,CGI程序无法直接从服务器的标准输入中获取数据,因为服务器把它从标准输入接收到得数据编码到环境变量QUERY_STRING(或PATH_INFO)。
GET与POST的区别:采用GET方法提交HTML表单数据的时候,客户机将把这些数据附加到由ACTION标记命名的URL的末尾,用一个包括把经过URL编码后的信息与CGI 程序的名字分开:/hello.html?name=hgq$id=1,QUERY_STRING 的值为name=hgq&id=1有些程序员不愿意采用GET方法,因为在他们看来,把动态信息附加在URL的末尾有违URL的出发点:URL作为一种标准用语,一般是用作网络资源的唯一定位标示。
环境变量是一个保存用户信息的内存区。
当客户端的用户通过浏览器发出CGI请求时,服务器就寻找本地的相应CGI程序并执行它。
在执行CGI程序的同时,服务器把该用户的信息保存到环境变量里。
接下来,CGI程序的执行流程是这样的:查询与该CGI程序进程相应的环境变量:第一步是request_method,如果是POST,就从环境变量的len,然后到该进程相应的标准输入取出len长的数据。
如果是GET,则用户数据就在环境变量的QUERY_STRING里。
3.POST与GET的区别以GET 方式接收的数据是有长度限制,而用POST 方式接收的数据是没有长度限制的。
并且,以GET 方式发送数据,可以通过URL 的形式来发送,但POST方式发送的数据必须要通过Form 才到发送。
三.CGI程序实现步骤1.从服务器获取数据C语言实现代码:#include <stdio.h>#include <stdlib.h>#include <string.h>int get_inputs(){int length;char *method;char *inputstring;method = getenv(“REQUEST_METHOD”); //将返回结果赋予指针if(method == NULL)return 1; //找不到环境变量REQUEST_METHODif(!strcmp(method, ”POST”)) // POST方法{length = atoi(getenv(“CONTENT_LENGTH”)); //结果是字符,需要转换if(length != 0){inputstring = malloc(sizeof(char)*length + 1) //必须申请缓存,因为stdin是不带缓存的。
fread(inputstring, sizeof(char), length, stdin); //从标准输入读取一定数据}}else if(!strcmp(method, “GET”)){Inputstring = getenv(“QUERY_STRING”);length = strlen(inputstring);}if(length == 0)return 0;}Perl实现代码:获取环境变量的时候,如果先判断“REQUEST_METHOD”是否存在,程序会更健壮,否则在某些情况下可能会造成程序崩溃。
因为假若CGI程序不是由服务器调用的,那么环境变量集里就没有与CGI相关的环境变量(如REQUEST_METHOD,REMOTE_ADDR等)添加进来,也就是说“getenv(“REQUEST_METHOD”)”将返回NULL!2.URL编码不管是POST还是GET方式,客户端浏览器发送给服务器的数据都不是原始的用户数据,而是经过URL编码的。
此时,CGI的环境变量Content_type将被设置,如Content_type = application/x-www-form-urlencode就表示服务器收到的是经过URL编码的包含有HTML 表单变量数据。
编码的基本规则是:变量之间用“&”分开;变量与其对应值用“=”连接;空格用“+”代替;保留的控制字符则用“%”连接对应的16禁止ASCII码代替;某些具有特殊意义的字符也用“%”接对应的16进制ASCII码代替;空格是非法字符;任意不可打印的ASCII控制字符均为非法字符。
例如,假设3个HTML表单变量filename、e-mail和comments,它们的值对应分别为所以,CGI程序从标准输入或环境变量中获取客户端数据后,还需要进行解码。
解码的过程就是URL编码的逆变:根据“&”和“=”分离HTML表单变量,以及特殊字符的替换。
在解码方面,PYTHON代码实现是最理想的,cgi.FieldStorage()函数在获取数据的同时就已自动进行代码转换了,无需程序员再进行额外的代码编写。
Perl其次,因为在一个现成的Perl库:cgi-lib.pl中提供了ReadParse函数,用它来进行URL解码很简单:3.CGI数据输出CGI程序如何将信息处理结果返回给客户端?这实际上是CGI格式化输出。
在CGI程序中的标准输出stdout是经过重定义了的,它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器,这与它是由C,还是Perl或Python实现无关。
所以,我们可以用打印来实现客户端新的HTML页面的生成。
比如,C的printf是向该进程的标准输出发送数据,Perl和Python用print向该进程的标准输出发送数据。
(1)CGI标题CGI的格式输出内容必须组织成标题/内容的形式。
CGI标准规定了CGI程序可以使用的三个HTTP标题。
标题必须占据第一行输出!而且必须随后带有一个空行。
MIME:向标准输出发送网页内容时要遵守MIME格式规则:任意输出前面必须有一个用于定义MIME类型的输出内容(Content-type)行,而且随后还必须跟一个空行。
如果遗漏了这一条,服务将会返回一个错误信息。
(同样使用于其他标题)例如Perl和Python:MIME类型以类型/子类型(type/subtype)的形式表示。
其中type表示一下几种典型文件格式的一种:Text、Audio、Video、Image、Application、Mutipart、MessageSubtype则用来描述具体所用的数据格式。
Location:使用Location标题,一个CGI可以使当前用户转而访问同一服务器上的另外一个程序,甚至可以访问另外一个URL,但服务器对他们的处理方式不一样。
使用Location的格式为:Location:Filename/URL,例如:HTTP状态码:表示了请求的结果状态,是CGI程序通过服务器用来通知用户其请求是否成功执行的信息码,本文不做研究。
四.CGI中的信号量和文件锁因为CGI程序时公用的,而WEB服务器都支持多进程运行,因此可能会发生同时有多个用户访问同一个CGI程序的情况。
比如,有2个用户几乎同时访问同一个CGI程序,服务器为他们创建了2个CGI程序进程,设为进程A和进程B。
假如进程A首先打开了某个文件,然后由于某种原因被挂起(一般是由于操作系统的进程调度);而就在进程A被挂起的这段时间内,进程B完成了对文件的整个操作流程:打开,写入,关闭;进程A再继续往下执行,但进程A所操作的文件依旧是原来文件的就版本,此时进程A的操作结果将覆盖进程B的操作结果。
为了防止这种情况发生,需要用到文件锁或者信号量。
钥匙文件?假如有多个不同的HTML可以调用同一个CGI程序,那么CGI程序如何区分它们呢?一个是通过隐含的INPUT标签。
不过觉得这个比较麻烦,因为CGI必须经过一系列解码后才能找到这个隐含INPUT的变量和其值。
五.设置HTTP服务器以兼容CGI用Perl编写的CGI程序后缀为:.pl;Python编写的CGI程序后缀为:.py;而C编写的CGI程序后缀为:.cgi,如果在win下编译出来的是.exe,最好将它重命名为.cgi。
这些都是为了HTTP服务能够识别并调用它们。
当使用appche httpd服务器时,请编辑它的配置文件httpd.conf如下:修改AddHandler cgi-script一句为AddHandler cgi-script .cgi .py .pl六.关于CGI的C语言库——cgihtmlCgihtml是一个应用非常广泛的C语言编写的CGI库。