嵌入式web -- CGI

嵌入式web -- CGI,第1张

目录
    • 1、CGI工作原理
    • 2、CGI简单测试
      • 2.1、shell案例
      • 2.2、c语言案例

1、CGI工作原理

公共网关接口(Common Gateway Interface,CGI)
是连接 服务器 和 应用 程序 之间的一个通用接口

2、CGI简单测试
  • 这里使用BOA服务器
  • 编辑配置文件,改最后一行的路径(别忘加 /)
$ sudo vim /etc/boa/boa.conf

以后就可以访问你自定义的cgi目录 (cgi-bin 是一个虚拟路径)

2.1、shell案例
  • 在自定义的cgi目录里 *** 作
$ touch time
$ chmod +x time
$ vim time
#!/bin/sh
echo "Content-Type:text/html;charset=utf-8\r\n"

echo "time"
echo "`date '+%H:%M:%S'`"
  • 在浏览器测试
2.2、c语言案例

clion连接虚拟机的方法
为了以后方便,直接上流程

  • 获取时间:get_time.c
#include 
#include 
#include "get_time.h"

char* GetTime(time_t now){
    struct tm *local;
    static char buf[15]; //记录时间xx-xx xx:xx:xx

    if(now <= 0){
        now = time(NULL);//获得当前的时间
    }

   local =  localtime(&now);
    if(local == NULL){
        perror("localtime error");
        return NULL;
    }

    snprintf(buf, sizeof(buf),"%02d-%02d %02d:%02d:%02d",
             local->tm_mon,local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);
    return buf;
}
  • 头文件:get_time.h
#ifndef GET_TIME_H
#define GET_TIME_H

#include 

extern char *GetTime(time_t now);

#endif
  • 主函数
#include 
#include "get_time.h"

int main() {
    printf("Content-Type:text/html;charset=utf-8\r\n");
    printf("\r\n");

    printf("CGI测试");
    printf("%s", GetTime(0));

    return 0;
}
  • Makefile
TARGET := ctest

CROSS_COMPILE :=
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld

OBJS := main.o
OBJS += get_time.o

CFLAGS += -Wall -I./inc
LDFLAGS +=

OUTPUT_DIR = /home/venom/web_prj/jobs/cgi/

all:$(TARGET)
$(TARGET):$(OBJS)
	$(CC) $(LDFLAGS) $^ -o $@
	cp $@ $(OUTPUT_DIR)

%.o:%.c
	$(CC) $(CFLAGS) -c $^ -o $@

clean:
	rm -f $(TARGET) $(OBJS)



嫌麻烦直接用mian函数随便打印一个再编译就行,Makefile还有点小问题

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1323995.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存