<Directory "C:/Apache2/cgi-bin">
AllowOverride All
Options All
Order allow,deny
Allow from all
</Directory>
在前面再加一句 printf("Content-Type: text/html\n\n");即
char query;
printf("Content-Type: text/html\n\n");//这句不能少
printf( "%s%c%c\n ", "Content-Type:text/html;charset=iso-8859-1 ",13,10);
printf( " <title> Search Result </title> \n ");
printf( " <H3> Search Result </H3> \n ");
query = getenv( "QUERY_STRING ");
如果你的程序中的 CGI 程序只能启动一次,可能是因为你的程序没有正确处理子进程退出的情况。
在调用 execvp 函数启动子进程执行 CGI 程序时,子进程会替换掉父进程的代码和数据空间,执行 CGI 程序。如果 CGI 程序执行完毕后正常退出,子进程会自动结束,父进程会收到子进程退出的信号。
在收到子进程退出的信号后,父进程应该调用 wait 或者 waitpid 函数等待子进程退出,并获取子进程的退出状态。如果父进程没有调用 wait 或者 waitpid 等待子进程退出,子进程可能会变成僵尸进程,导致后续的 CGI 程序无法正常启动。
因此,建议在父进程中调用 wait 或者 waitpid 等函数等待子进程退出,以避免出现僵尸进程的情况。
回答不易,请点个赞。
首先你要分清 CGI (协议) 和 CGI Application(程序/脚本) 是两个不同的东西 说 "是外部应用程序(CGI程序)" 这是错的 CGI 不是程序, 也不是一种编程语言, 而是协议, 像 SMTP, POP3, FTP 那些协议 现在是 11 的版本 (详见: RFC3875)
你用 php/perl/c/ 写出来的, 只是 CGI Application, 而不是 CGI CGI 是靠 Web 服务器与浏览器互动来完成的 (所以你绝对曾经通过过 CGI ) 当中的 I ( Interface ) 指的就是 web server 的 I/O 而这个 interface 就同时面向了你写的 Application 和 客户端的浏览器
CGI Application (程序) --- Web 服务器 ( CGI ) --- 浏览器
具体一点 某人从客户端对 web server 发出了个 submit form 的请求 到了 web server 後, web server 就会将资料生成并变成 STDIN 的缓存 ( buffer ), 并等代你的 script 去 read() 这使得你不用理会客户端是甚麼 window, linux 还是 ios, 用的是 chrome, firefox 还是 ie 还是其他 同样, 你的程序运行後, 就会经由 STDOUT 送出, 而对方也不用理会你用是 Apache 还是IIS, 还是 Ngnix 这就是 CGI 的体现
网页制作分为设计与技术两方面。
网页究竟是什么?
网页又叫主页,是用一种HTML的标志语言来表示的,它将我们要表示的信息用HTML语言表示出来,这就形成了HTML代码,浏览器的工作主要是将这些标记语言“翻译”过来,并照定义的格式等显示出来,这就是我们所真正看到的网页。
网页制作究竟需不需要学习HTML语言呢?
在网页制作工具还很缺少并功能并不很强大的时候,要做网页就必须熟悉这些HTML代码了,最常用的就是用写字板来写HTML标记代码,这可对一些非计算机方面的朋友要做HTML不啻于一个畏途,现在好了,由于功能强大的网页编辑制作工具FrontPage与DreamWeaver及HomeSite等的出现,使网页制作变得更简单,生成的网页效果更为丰富。我想,“网页设计”这个概念大概也就在这时随之出现了,因为这些工具的出现使得网页制作不再需要去专门学HTML标记语言,就象从事广告制作的人员一样,不必是计算机专业的科班生,而只需懂有限的几个软件的使用就可以创意构思出精彩的画面;同理,这些网页制作工具使得网页的创意设计更多地依赖于一种内容的组织与美感的很好把握。由此看来,从事网页设计是大可不必钻研HTML语言的哟?只说对了一大半。在本人看来,如果你是一位对HTML语言不感兴趣,很喜欢创意设计的朋友,是可以回避HTML代码的,因为就凭这些工具进行设计是可以胜任的,工具自动生成HTML代码;但假若你需要做一些页面控制,并且遇上工具令人讨厌的时候(记住,现在这些工具还不能完全图文混排哟!),就不得不打开代码窗,去动手修改那一串串比较抽象的符号。另外,如果你想写脚本语言程序及搞其它一引起服务器端脚本编程的话,就必须了解HTML语言了。我的建议是不管你对HTML语言感兴趣与否,能学一些,懂一些最好!
网页设计中最重要的是什么
既然强大的网页设计工具使人们不再面对恼人的代码,“网页设计师”才真正名符其实了,一个大解放!网页设计实际上正变为怎样为页面进行“形象设计”了。不言而喻,美术设计尤为重要!说真的,技术型的人才大有危机之感啦,为啥?如果对美感甚或说美术不在行的话,虽然有技术但做不出漂亮的有创意的主页,这可是大忌呀!就拿Flash动画制作来说吧,虽然懂得不少技术,但就是做出来的东西不吸引人,也是就是人们常说的只有“匠气”而无“灵气”了。因为,网页的灵魂就在于创意!工具的傻瓜化,网页制作行业对制作人员美术的要求更高,这也不难理解现在网页制作招聘为什么都无一例外地写着懂图形设计这项了。
由此,如果你对网页设计这项职业太热衷的话,我建议你在图形设计等方面多下功夫,这才是根本。
网页制作职业的将怎样分化
从上可以看出,网页制作涉及设计与技术两面方面,随着工具的简化与功能的强大,设计与技术的比较一方面表面上看来界限不清,另一方面,技术在不断发展,网页制作的技术也将层出不穷,技术与设计的分离也是势不可免,可以想见,今后网站网页制作人员的搭配将是少量技术人员与大量设计人员。
网页设计对美术的要求更为苛刻,并不是技术型的网页设计人员就无路可走了。扬长避短乃明智的选择!网页设计表面上使设计人员与技术相隔离,但在服务器端的编程处理、网页设计所涉及各种技术的综合、网站的架构等等是美术型网页设计人员所不能胜任的,技术型人员仍前途光明,依本人之见,而今有些网站在招聘时对这种分划视而不见,要求大而全,全知全能,实在有些令人气愤!
网页制作需要学哪些东西
除了我们将才所说的学习一些基本的HTML语言知识外,一般说来需要学:图形工具的使用、网页制作工具的使用、网页动画工具的使用。
现在做图形的工具很多,有涉及平面的,有涉及动画的。平面设计大多选PhotoShop,CoralDraw等;而做网页动画的工具如FireWorks、Ulead及时下很流行的Flash。而网页制作工具大家肯定都比较熟悉了,如DreamWeaver及FrontPage等,这两个工具各有千秋,难分伯仲,没有定论,但时下一些网站招聘好像对DreamWeaver情有独钟,这也难怪,DreamWeaver功能也确实强劲,冗余代码少,站点管理,特效实现等轻而易举,但新近的也有很大的改进。两个制作工具学起来都比较简单,提供了图形化的设计界面,告诉你一个很好的学习HTML语言的绝佳办法:看这些工具自动生成的HTML代码!
这上面所说的只是对于比较单纯的网页设计来说的,是不是技术就变得很不重要了呢?不是,只是技术在另外一些方面显得尤为重要。如果我们要征对页面写一些控制过程、需要在服务器端进行一些数据处理,那么编程这块就是技术型网页制作人员的天下了!基本的编程学习内容有脚本语言。脚本语言是动态HTML的生命力之所在。也是一种面向对象的解释性程序语言,现在有JavaScript与VBScript,前者比后者的资历老,IE与NS两种浏览器都支持,所以,在一般的不涉及及服务器端的脚本编程的话,那么,JavaScript是首选。学习脚本语言本人有一个建议,请一定要对DHTML的对象模型搞清楚,这样才能很好地进行实际编程。其次为CGI语言与服务器端脚本语言
CGI是公用网关接口的缩写,CGI程序运行在服务器端,对用户端提交的请求进行处理,我们浏览服务器上的网页时,自己就是一个用户,如果我们要在线进行数据查询,提交等,这些处理都是在服务器端即服务器上进行处理。CGI程序可用任何编译型语言进行编写如Delphi、C等。而服务器端编程语言如ASP、Perl、PHP、coldFusion等程序并不是严格的CGI程序,只能算是一种在服务器端运行的脚本语言。ASP、Perl、PHP、coldFusion等比较常用,只是征对不同的系统平台,以及应用的领域不同,几种语言均用得较广,ASP是征对WinNT平台的,Perl、PHP征对Unix、Linux与WinNT等。你可根据自己的实际情况选用一种,其中,一定要注意,服务器端脚本语言与数据库的结合是一个比较重要的方面,学习时要多留心。
从事这项职业,应该关注什么?
技术发展得太快了,新的东西层出不穷,利用职业之便掌握一些有关职业方面的动态是必须的
关注XML,XML是一种扩展标记语言,可以很方便对结构化数据进行描述,允许用户对自己的标记语言进行定义,提供了一个直接处理Web数据的通用方法,具有广阔的应用前景,特别是对传统的网页制作将有较大的影响,不妨多关注一下。
了解VRML,VRML是一种网上虚拟现实语言,它的出现使远程虚拟现实成为可能,对电子商务、多媒体等具有深远的影响,并且能通过脚本语言进行一系列控制。随着网络带宽的改善以及创造工具的简化,相信会在不久将风糜于世。
关注WML。信息家电也能上网,这种网页采用了WML标记语言。WML与HTML既有相似与借鉴之处,又有自己的特点,随着信息家电的普及,家电上网也将日益频繁,针对不同家电设计相关的主页将会成为网页设计的一个重要分支。
关注脚本语言。这里所说的脚本语言并不单指上面所说的JS或VS,实际上,要使各种信息能在网上表达并传输,不同的开发工具都会提供一个对信息进行控制的简单的接口程序语言,也就是一种描述性的脚本语言,它使得控制更为简便易行,可以毫不夸张地说,脚本语言将成为网络时代的一道绚丽的风景线!
网页制作学习的有什么好的途径
建立个人站点不失为一个综合的训练与学习的绝佳途径!建立个人站点在网站内容的架构、组织、制作、宣传、运作等均有涉及,并且要成为一个优秀个人网站,要不断地学习与提高。现今从事网页制作职业的人员大都来自个人站点的建设者。这种锻炼一则全面、二则能学到不少单纯地制作页面所不能学到的知识。当然了,另外的方法还有多学习别人的制作,特别是一个大站与优秀个人网站,学页面布局、用色、创意、内容的组织与架构等。这样才能敏感地察觉自身的不足!以上说这些,只是一孔之见,实际远不止这些,我们将会继续关注网页设计职业这个话题,相信会有更多的精辟之文出现,此文权作抛砖引玉罢!
1:首先要学网站建设的话,得学MacromediaDreamweaver这个软件,因为这是专业制作网站的软件,也是比较好用的,还要学POTOSHOP,FLASH等软件接着你还得学点html,asp,等语言,这样你都会的话,制作一个网站就没问题了。
2:现在的网站大体分为静态的和动态的,静态的你学完以上软件等知识就可以做了,动态的话还是分为好几类的;
(1)支持ASP的动态网站,和动态空间,这个的学ASP
(2)支持ASPNET的动态网站,和动态空间,这个的学ASPNET这是ASP的更新
(3)支持PHP的动态网站,和动态空间,这个的学PHP和ASP不一样了
(4)支持JSP的动态网站,和动态空间,这个的学JSP
域名和空间的申请是这样的
首先和你说下原理,当你做成一个网站后,需要发布到网上,是怎么样实现的,先申请一个域名和空间,空间申请是要动态的,那看你的网站用什么语言编写的了,就像上面提到的,有ASPPHPJSP相应的空间支持和价格都是不同的,然后域名的话在那里申请都是一样,价格也是比较透明的。
接着是你申请的空间,会给你分配一个固定的IP地址,和用户名密码。
然后到你申请域名的公司让他们帮你做以下IP解析,解析到你空间的IP地址上,接着把你做好的网站上传到你的空间里就可以了。
再说下域名解析的问题,一个域名只能解析一个IP,反过来一个IP可以解析多个域名
公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。
通过CGI 协议,再结合已搭建好的web应用程序,就可以让web server也能"处理"动态请求(或者说,当用户访问某个特定资源时,可以触发执行某个web应用程序来实现特定功能)。
扩展资料
CGI规范定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。
对于许多静态的HTML网页无法实现的功能,通过 CGI可以实现,比如表单的处理、对数据库的访问、搜索引擎、基于Web的数据库访问等等。
当CGI进程接收到web server的请求后,调用search程序并执行,同时还会传递参数给search程序。search执行结束后,CGI进程/线程将处理结果返回给web server,web server再返回给浏览器。
参考资料来源:百度百科-CGI
1 cgi
- 通用网关接口,就是外部应用程序(cgi程序)与web服务器之间的接口标准。
- nginx是内容分发者,如果是请求indexphp,根据配置文件内容得知不是静态文件,就会去找对应的cgi程序进行解析
- cgi就是规定要传那些数据,以什么格式传递给后方进行处理的协议
- cgi工作模式,一个请求发送过来,启动cgi解释器(创建进程)-> 逻辑处理 -> 退出 (fork and exec 模式) 每次都需要重新创建进程,加载配置,浪费系统资源
2 fastcgi
- 快速通用网关接口,常驻型的cgi,不用每次都fork进程,其会使cgi解解释器进程常驻内存,所以性能较高
- master-worker模型,服务器启动时载入fastcgi进程管理器
- fastcgi会进行自身初始化,初始化时会创建多个进程
- 请求到达web服务器后,fastcgi进程管理器会选择并通过socket连接到一个cgi解释器
3 php-cgi
- php自带的cgi管理器
- php-cgi的缺点,不能平滑重启,需要重启php-cgi才能使phpini生效
4 php-fpm
- php-fpm是php的一种fastcgi的实现,管理php的fastcgi进程池
- 能够调度php-cgi程序
- 能够实现平滑重启
- php-fpm创建一个master进程,然后创建进程池,监听socket,fork出多个子进程,子进程各自accept请求,php-fpm的子进程同时只能响应一个请求,处理完一个请求才可以accept下一个请求,多进程,同步阻塞模型
- master和worker进程之间不直接进行通信,master通过共享内存获取worker进程信息,master进程发送信号通知worker进程
- php-fpm可以同时监听多个端口,每个端口对应一个worker pool
- worker是cgi程序,php-fpm是fastcgi协议的php是实现
以上就是关于如何配置执行c写的cgi程序全部的内容,包括:如何配置执行c写的cgi程序、自己编写的Linux Web Server调用CGI程序时出现问题、请问linux cgi程序 处理button 和submit的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)