当前位置:  技术问答>linux和unix

web服务器给设置环境变量,cgi无法得到

    来源: 互联网  发布时间:2017-04-13

    本文导语:  本机测试  127.0.0.1/cgi-bin/adder.cgi?10&20     服务器进行  HTTP响应的部分代码     sprintf(buf, "HTTP/1.0 200 okrn");     rio_writen(fd, buf, strlen(buf));     sprintf(buf, "Server:Tiny web serverrn");     rio_writen(fd, buf, strlen(b...

本机测试  127.0.0.1/cgi-bin/adder.cgi?10&20

    服务器进行  HTTP响应的部分代码
    sprintf(buf, "HTTP/1.0 200 okrn");
    rio_writen(fd, buf, strlen(buf));
    sprintf(buf, "Server:Tiny web serverrn");
    rio_writen(fd, buf, strlen(buf));
    sprintf(buf, "cgiargs:%srn",cgiargs);
    rio_writen(fd, buf, strlen(buf));
    if(fork() == 0)
    {
        //set cgi vars here
        setenv("QUERY_STRING", cgiargs, 1);
        dup2(fd, STDOUT_FILENO);
        execve(filename, NULL, NULL);
    }
    wait(NULL)


cgi 获取 环境变量的代码

    char *buf, *p;
    char arg1[10], arg2[10];
    char content[MAXLINE];
    int n1 = 0, n2 = 0;
    int flag = 0;

    if((buf = getenv("QUERY_STRING")) != NULL)
    {
        p = strchr(buf, '&');
        *p = '';
        strcpy(arg1, buf);
        strcpy(arg2, p+1);
        n1 = atoi(arg1);
        n2 = atoi(arg2);
        flag = 1;
    }


下面为返回报文
HTTP/1.0 200 ok
Server:Tiny web server
cgiargs:10&20
Content-length:114
Content-type:text/html

Welcome to add.com:The Internet addition portal.

The answer is :0 + 0 = 0

Thanks for visiting!
flag = 0
Connection closed by foreign host.

能看出cgiargs 解析没有错误。
通过随后对flag 的判断,发现buf 始终为Null,即未取到环境变量,不知道到 哪块出问题了? 
还请大神指导下,谢谢


|
本帖最后由 qq120848369 于 2013-05-25 18:05:04 编辑
你的execve用的不对,虽然你设置了子进程的环境变量,但你接着用NULL,NULL调用了execve把环境变量和命令行参数全清空了。

你应该使用execv/execvp, 让子进程直接继承父进程的环境变量,这样setenv的才能继承下去。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在LINUX下无法访问WIN2000下的WEB页面,高手指教!
  • linux9.0 web mysql 服务正常 但是网页无法打开 请帮助?感谢!
  • 小弟向各位大哥请教,我的web服务器启动起来以后,为什么别人无法访问!
  • vmware下无法访问虚拟linux系统的web服务
  • 3小时内结帖,请教, RH9 启动Web服务后,无法显示自己的网页,只能默认显示apache页面.
  • unp(3rd) 非阻塞connect Web客户程序,connect()无法成功
  • [急救]Linux平台Java的Web系统,断电后无法运行!
  • web网页自动跳转方法:Html body onload自动跳转举例
  • aria2的Web接口 a2web
  • Python3通过request.urlopen实现Web网页图片下载
  • SVN的Web管理界面 svn-web-admin
  • Web前端设计:Html强制不换行<nobr>标签用法代码示例
  • 嵌入式的Scala Web服务器 SOCKO WEB
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • Web相册 Dumi Web Gallery
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 请问:authorization of web services和authenication of web services什么区别?
  • Web服务器 Gatling Web Server
  • 小型Web服务器 nweb Web Server
  • C#取得Web程序和非Web程序的根目录的N种取法总结
  • 有没有什么方法或思路把web服务器上的文件上传到另外一个web服务器?
  • Java Web应用框架 WEB4J
  • 用Java开发web程序,用什么做web服务器最好?
  • LINUX下面的WEB Service如果编写?是用.NET写吗?WINDOW下面的web service能在LINUX下面用吗?
  • Web爬虫框架 Smart and Simple Web Crawler
  • 在单网卡的linux web服务器上虚拟Windows系统搭建多个.net web网站,有谁做过?
  • 问tomcat中在tomcat启动时,哪个包加载了/WEB-INF下的web.xml文件?要多少给多少分
  • 我是刚开始学web service ,我想请教哪里有构件web Service的具体操作。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,