红联Linux门户
Linux帮助

编程技术 - 自制c语言编制cgi实现搜索功能

发布时间:2005-11-23 12:36:44来源:红联作者:linux_
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&", keyword);

p += sprintf(p, "locate '%s' | sed -e 's#^/usr/local/apache/htdocs#http://129.158.217.223#' | sed -e 's#^.*$#&
#' > ", 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;
}

[ Last edited by linux_ on 2005-11-23 at 12:40 ]
文章评论

共有 2 条评论

  1. hongmaojin 于 2008-03-28 13:26:56发表:

    顶一下

  2. zotyu 于 2005-12-02 16:48:52发表:

    支持下