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
即可
--------------------- 
作者:一名路过的小码农 
来源:CSDN 
原文:https://blog.csdn.net/liangguangchuan/article/details/61199274 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/boshuzhang/article/details/84990210