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

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 88 ::
收藏到网摘: 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;
  }