当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 小技巧:自制c语言编制cgi实现搜索

Unix/Linux
linux 操作技巧收集_
linux下如何读取使用iso 镜像文件的方法
Linux平台下文件的压缩与解压参数说明
Linux下常用压缩格式的压缩与解压方法
Linux JDK,TOMCAT安装及环境设置
Linux sleep命令使用参数
Linux cat命令参数
nfs 配置的简单例子
linux kill 关闭进程命令
linux ultrasphinx Anonymous modules have no name to be referenced by
Linux oracle 9i图文安装方法一
Linux oracle 9i图文安装教程二
Linux oracle 9i图文安装教程三
Linux oracle 9i图文安装教程四
Linux oracle 9i图文安装教程五
Linux oracle 9i图文安装教程六 完结篇
linux AS3 oracle9i 安装指南
Linux 下 (RedHat 9.0) JDK,Tomcat,MySQL的安装
RedHat 9.0下Apache+PHP+MySQL服务器安装配置
Linux 下用 Python 连接 MSSql Server 2008

Unix/Linux 中的 小技巧:自制c语言编制cgi实现搜索


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 74 ::
收藏到网摘: n/a


  1. 环境
  /usr/local/apache/htdocs/ (待检索的文件在该目录下)
  /usr/local/apache/temp/ (作为中转的文件夹)
  /usr/local/apache/cgi-bin/
  2. 将gcc search.c产生的a.out放置在/usr/local/apache/cgi-bin/中,权限设置为nobody可
  以执行。
  3. chown -R nobody.nobody /usr/local/apache/temp
  4. 在/etc/cron.daily中增加一个文件deletetemp 权限为555
  rm -f /usr/local/apache/temp/*
  5. 在/etc/cron.hourly中增加一个文件myupdate 权限为555
  updatedb -U /usr/local/apache/htdocs
  6. 删除/etc/cron.daily中的一个文件slocate.cron
  
  附录(共2条):
  1. index.htm的源码
  
  
  Untitled Document
  
  
  
  
  
请输入你的查询字符串
  

  
  
  
  
  
  
  
  


  
 
  
  
  
  2. search.c的源码
  #include
  #include
  #include
  #include
  #include
  
  int main(int argc, char* argv[])
  {
  int fd;
  int status;
  time_t i;
  char cFileName[64];
  char cTempName[64];
  char cBuffer[1024];
  char *p = cBuffer;
  char cContent[10240];
  
  char *data;
  char keyword[1024];
  data = getenv("QUERY_STRING");
  if(data==NULL)
  {
  printf("Content-Type:text/html ");
  printf("not found!");
  exit(1);
  }
  
  sscanf(data, "keyname=%s/DownloadFiles\a\2003-09-01\&", keyword);
  
  p += sprintf(p, "locate '%s' | sed -e 's#^/usr/local/apache/htdocs#http://129.158.217.223#' | sed -e 's#^.*$#/DownloadFiles\a\2003-09-01\&
  #' > ", keyword);
  i = time(NULL);
  
  sprintf(cTempName, "%d.html", i);
  sprintf(cFileName, "/usr/local/apache/temp/%d.html", i);
  strcat(cBuffer, cFileName);
  cBuffer[1024-1]=0;
  
  system(cBuffer);
  fd = open(cFileName, O_RDWR);
  status = read(fd, cContent, sizeof(cContent)-1);
  close(fd);
  
  printf("Content-Type:text/html ");
  printf(" ", cTempName);
  printf("Waiting....................... ");
  printf("%s", keyword);
  return 0;
  }