CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

菜鸟入门:如何着手用c/c++写linux下的cig程序啊?

楼主go_my_sky(凡石)2005-02-13 00:37:56 在 Linux/Unix社区 / 程序开发区 提问

菜鸟入门:如何着手用c/c++写linux下的cig程序啊?  
   
  本人有windows平台下的编程经验。  
  但如今老板要求用c/c++写个计数器配合php程序。  
  但不知道如何入手?  
   
  请大虾们指导几句或是提供相关文章连接。  
  回帖给分!  
  问题点数:100、回复次数:6Top

1 楼go_my_sky(凡石)回复于 2005-02-13 00:49:21 得分 0

/*testcgi.c*/  
   
  #include   <stdio.h>  
  int   main()  
  {  
              printf("Content-type:   text/html\n\n");  
              printf("<html>");  
              printf("<Thank   you   !>");  
              printf("</html>");  
              return   0;  
  }  
   
  就是我写这段程序并用gcc编译后该如何运行?Top

2 楼go_my_sky(凡石)回复于 2005-02-14 12:13:53 得分 0

cgi中如何获得xx.cgi?aa=1&bb=2  
  后面的参数值?Top

3 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-02-14 19:03:31 得分 20

cig????????  
   
  cgi吧?  
  主要就是一个MIME头搞正确了就可以了,其他的都是printf输出就可以了  
   
  运行的话需要靠Web   Server来执行,然后抓取所有的输出返回给web   client  
   
  Apache你装了没有?没装的话装一个,然后放到cgi-bin里面去,从浏览器输入http://ursite/cgi-bin/progname  
  这样就可以了,?后面的内容是放在cgi程序的那个argv里面了(程序运行的参数),你找一个cgi基础教程里面这些东西应该都有Top

4 楼go_my_sky(凡石)回复于 2005-02-16 18:53:12 得分 0

是   cgi   ,呵呵。不小心写错了。  
   
  上面的问题我已经知道是怎么回事了。  
   
  我现在想知道cgi如何访问共享内存。  
  能不能给一段范例代码?Top

5 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-02-16 19:21:33 得分 10

共享内存?普通程序怎么干,这个就怎么干啊,cgi程序每次都会导致新的进程的创建的Top

6 楼tukey(反美反霸权!)回复于 2005-02-16 21:48:57 得分 70

用C编写的判断   FORM   输入的一个   CGI  
   
   
    这是用C编写的一个CGI,他能接受用户任何   FORM   的输入并确认,你可以随意编写一个表单,让他来处理看看。既然能接受   FORM   的输入,那便可以做很多事情,比如判断用户,密码登陆等变由此扩展编写,那就看  
  你的拉!!  
   
  #include   <stdio.h>  
  #include   <stdlib.h>  
  #define   MAX_ENTRIES   50  
  #define   LF   10  
  #define   CR   13  
   
   
  typedef   struct   {  
  char   *name;  
  char   *val;  
  }   entry;  
   
  char   *makeword(char   *line,   char   stop);  
  char   *fmakeword(FILE   *f,   char   stop,   int   *len);  
  char   x2c(char   *what);  
  void   unescape_url(char   *url);  
  void   plustospace(char   *str);  
   
   
  main(int   argc,   char   *argv[])   {  
  entry   entries[MAX_ENTRIES];  
  register   int   x,m=0;  
  int   cl;  
   
  printf("Content-type:   text/html%c%c",10,10);    
   
  if(strcmp(getenv("REQUEST_METHOD"),"POST"))   {    
  printf("This   script   should   be   referenced   with   a   METHOD   of   POST.\n");  
  exit(1);  
  }  
  if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded"))   {    
  printf("This   script   can   only   be   used   to   decode   form   results.   \n");  
  exit(1);  
  }  
  cl   =   atoi(getenv("CONTENT_LENGTH"));  
   
  for(x=0;cl   &&   (!feof(stdin));x++)   {    
  m=x;  
  entries[x].val   =   fmakeword(stdin,'&',&cl);  
  plustospace(entries[x].val);  
  unescape_url(entries[x].val);  
  entries[x].name   =   makeword(entries[x].val,'=');  
  }  
   
  printf("<H1>查   询   结   果</H1>");    
  printf("您   输   入   的   查   询   值   如   下   ∶   <p>%c",10);  
  printf("<ul>%c",10);  
   
  for(x=0;   x   <=   m;   x++)    
  printf("<li>   <code>%s   =   %s</code>%c",entries[x].name,  
  entries[x].val,10);  
  printf("</ul>%c",10);  
   
  }  
   
  char   *makeword(char   *line,   char   stop)   {  
  int   x   =   0,y;  
  char   *word   =   (char   *)   malloc(sizeof(char)   *   (strlen(line)   +   1));  
   
  for(x=0;((line[x])   &&   (line[x]   !=   stop));x++)  
  word[x]   =   line[x];  
   
  word[x]   =   '\0';  
  if(line[x])   ++x;  
  y=0;  
   
  while(line[y++]   =   line[x++]);  
  return   word;  
  }  
   
  char   *fmakeword(FILE   *f,   char   stop,   int   *cl)   {  
  int   wsize;  
  char   *word;  
  int   ll;  
   
  wsize   =   102400;  
  ll=0;  
  word   =   (char   *)   malloc(sizeof(char)   *   (wsize   +   1));  
   
  while(1)   {  
  word[ll]   =   (char)fgetc(f);  
  if(ll==wsize)   {  
  word[ll+1]   =   '\0';  
  wsize+=102400;  
  word   =   (char   *)realloc(word,sizeof(char)*(wsize+1));  
  }  
  --(*cl);  
  if((word[ll]   ==   stop)   ||   (feof(f))   ||   (!(*cl)))   {  
  if(word[ll]   !=   stop)   ll++;  
  word[ll]   =   '\0';  
  return   word;  
  }  
  ++ll;  
  }  
  }  
   
  char   x2c(char   *what)   {  
  register   char   digit;  
   
  digit   =   (what[0]   >=   'A'   ?   ((what[0]   &   0xdf)   -   'A')+10   :   (what[0]   -   '0'));  
  digit   *=   16;  
  digit   +=   (what[1]   >=   'A'   ?   ((what[1]   &   0xdf)   -   'A')+10   :   (what[1]   -   '0'));  
  return(digit);  
  }  
   
  void   unescape_url(char   *url)   {  
  register   int   x,y;  
   
  for(x=0,y=0;url[y];++x,++y)   {  
  if((url[x]   =   url[y])   ==   '%')   {  
  url[x]   =   x2c(&url[y+1]);  
  y+=2;  
  }  
  }  
  url[x]   =   '\0';  
  }  
   
  void   plustospace(char   *str)   {  
  register   int   x;  
   
  for(x=0;str[x];x++)   if(str[x]   ==   '+')   str[x]   =   '   ';  
  }  
   
  Top

相关问题

  • c++入门书
  • c++入门
  • 请介绍几本Linux c/c++编程 入门的书
  • 请教各位大侠Linux和C++如何入门
  • c++入门问题
  • 求c#(asp.net)入门
  • c#入门问题~
  • C++的入门疑惑???
  • C#入门问题,hello world
  • 求VS.net -c#入门书籍

关键词

  • c/c++
  • cgi
  • word
  • cig
  • wsize
  • 程序
  • fmakeword
  • ll
  • entries
  • 编写

得分解答快速导航

  • 帖主:go_my_sky
  • nodummy
  • nodummy
  • tukey

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo