检查 Go 程序是否在运行的方法:使用 go run 命令
对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《检查 Go 程序是否在运行的方法:使用 go run 命令》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
问题内容我想知道是否有非特定于操作系统的方法来测试 Go 程序是否通过使用 go run
命令或执行 go build
命令生成的二进制文件启动。
解决方案
首先:它始终编译。
第二:没有任何保证的方法可以区分使用 go build
和 go run
编译的二进制文件之间的差异。
go run main.go
只是构建一个临时二进制文件并执行它。
您可以通过打印 os.args[0]
(第一个参数)来查看正在执行的二进制文件的路径。例如对于以下程序:
package main
import (
"fmt"
"os"
)
func main() {
fmt.println(os.args[0])
}
$ go run main.go
/tmp/go-build854217312/b001/exe/main
$ go build -o main . && ./main
./main
您可以尝试检测第一个目录位于临时目录中,但该位置取决于操作系统,并且不保证在各个 go 版本中保持相同。
总的来说,这可能不值得。 go run
对于任何严肃的二进制文件都是不可接受的,它应该始终被编译。
这是我用来获取工作目录的函数,无论我使用 go run
运行还是构建它:
func GetWorkDir() string {
ex, err := os.Executable()
if err != nil {
panic(err)
}
dir := filepath.Dir(ex)
// Helpful when developing:
// when running `go run`, the executable is in a temporary directory.
if strings.Contains(dir, "go-build") {
return "."
}
return filepath.Dir(ex)
}
本篇关于《检查 Go 程序是否在运行的方法:使用 go run 命令》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341