golang cgi调用golang 程序

代码如下
package main

import (
	"net/http"
	"net/http/cgi"
)

func main() {
	http.HandleFunc("/", Handler)
	http.ListenAndServe(":8080", nil)
}
func Handler(w http.ResponseWriter, req *http.Request) {
	var dir string = "D:/GOPATH/src/cgi"
	cgi_obj := new(cgi.Handler)
	//设置 cgi 运行目录
	cgi_obj.Path = "D:/Go/bin/go"
	//设置脚本目录
	script := dir + req.URL.Path
	//设置 CGI 可执行文件的工作目录
	cgi_obj.Dir = dir
	args := []string{"run", script}
	//设置 传递给子进程的可选参数
	cgi_obj.Args = append(cgi_obj.Args, args...)
	//设置 GOPATH 目录 如果没有 会报go run: no go files listed 但是不影响运行
	cgi_obj.Env = append(cgi_obj.Env, "GOPATH=D:/GOPATH")
	//设置 GOROOT 目录 默认情况下 windows 会去找 C:/GO
	cgi_obj.Env = append(cgi_obj.Env, "GOROOT=D:/Go")
	//启用http server   重新实现  http Handler interface 接口
	cgi_obj.ServeHTTP(w, req)
}

需要一个文件的配合

xiaochuan.go

package main

import (
	"fmt"
)

func init() {

	//设置header 头 记得要 加 两个\n
	//否则访问 会有问题  cgi: no headers 错误
	//如果一个 \n 会将结果输出到 终端 并提示cgi: bogus header line: This is xiaochuan gocgi test
	fmt.Print("Content-Type: text/html;charset=utf-8\n\n")
}

func main() {
	fmt.Println("This is xiaochuan gocgi test")
}
运行完成 直接 访问 http://127.0.0.1:8080/xiaochuan.go

即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名路过的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值