精华内容
下载资源
问答
  • 最近用Go语言做项目,发现有些功能使用go非常难实现,但是使用其他语言又比较简单,所以寻思能不能让go调用其他文件,然后执行后获取传递的参数。搜了下发现exec.Command貌似可以实现这个功能 ...

    最近用Go语言做项目,发现有些功能使用go非常难实现,但是使用其他语言又比较简单,所以寻思能不能让go调用其他文件,然后执行后获取传递的参数。搜了下发现exec.Command貌似可以实现这个功能。

    首先你需要一个"可执行文件",我们这里暂时理解为以.exe结尾。在我们的项目中,我使用了c++来实现部分go难以实现的功能,为了能让go运行这些代码,我们需要先把.cpp编译成为.exe,windows可以在VistualStudio中新建一个项目然后调试,在项目目录中找到这个exe文件。

    然后,在go中调用"os/exec"包,就像如下:

     test.go

    package main
    
    import (
    	"os/exec"
    )
    
    func init() {
    	print("初始化成功!")
    
    }
    
    func main() {
    	cmd := exec.Command("yeah")
    	out, err := cmd.Output()
    	if err != nil {
    		println("error:", err.Error())
    	}
    	println(string(out))
    }

    在这段go代码中,我们有一个"cmd"变量,调用了exec.Command()。这个函数可以有多个参数,第一个参数为(路径/文件名),若与调用这个函数的go在同一路径下可以只写名字,后面可选填参数,为输入执行文件的参数,这里暂时不需要。

    下面是c++的代码,为了测试方便,这里把它放到与go main包相同路径下

    yeah.exe

    #include<iostream>
    using namespace std;
    
    
    int main() {
        cout << "haha" << endl;
    }

    最后我们运行test.go代码,在调试输出中就能看到:

    成功在go中获取了c++用cout往命令行中传出的信息。

    这个方法同样可以用于许多其他语言,不过要注意,先测试一下exe的执行条件,比如java编译的执行文件必须要与.class文件在同一目录,处理时不要漏了。

     

    展开全文
  • I am modifying the code from <a href="https://golang.org/doc/articles/wiki/" rel="nofollow">tutorial page, so that I can execute the saved page as go code (similar to <a href="https://play.golang.org...
  • go exec

    2021-04-27 23:05:39
    package main import ( "fmt" "os/exec" ... cmd := exec.Command("ls") ///查看当前目录下文件 out, err := cmd.Output() if err != nil { fmt.Println(err) } fmt.Println(string(out)) }
    package main
    
    import (
    	"fmt"
    	"os/exec"
    )
    
    func main() {
    	cmd := exec.Command("ls") ///查看当前目录下文件
    	out, err := cmd.Output()
    	if err != nil {
    		fmt.Println(err)
    	}
    	fmt.Println(string(out))
    }
    
    展开全文
  • go build command-line-arguments: : fork/exec : no such file or directory </code></pre> <p>For some reason, instead, I need to compile with gccgo, but could never get it to compile. Let alone to ...
  • podfile 变为了exec可执行文件 前段时间不知道怎么了,突然发现自己的podfile文件都变为了可执行文件,不能打开编辑了,用终端是可以的,但是好不方便啊,偶尔需要直接打开看内容的,PS,如果编辑podfile 文件建议...

      podfile 变为了exec可执行文件

        前段时间不知道怎么了,突然发现自己的podfile文件都变为了可执行文件,不能打开编辑了,用终端是可以的,但是好不方便啊,偶尔需要直接打开看内容的,PS,如果编辑podfile 文件建议还是用vim编辑,这样pod install的时候不容易有警告。

    网上查了差不多一上午,最终才找到解决方案,本以为是很大的问题,其实是非常简单的

        首先要理解一个概念,unix 文件中没有“类型”, 也没有Windows中的扩展名, 变为exec文件只是因 为权限更改了,,,,此处省略一万字,,,,? 

    如果想改为可编辑状态 只需要使用终端更改文件权限

    终端使用命令$ chmod 644 文件名 就会变回正常的了

    具体如果想了解 6 4 4 分别代表什么,具体可参考这篇 介绍的非常详细了

    http://blog.chinaunix.net/uid-23337335-id-2431122.html

    在此我就不赘述了,希望这篇文章能帮到正在读文章的你,

    展开全文
  • 预停止执行 简单的 Go 预停止可执行文件
  • exec.Command写入文件

    2019-07-18 07:23:41
    cmd := exec.Command("bash", "-c", dumpStr) cmd.Env = append(cmd.Env, "PGPASSWORD="+DbPassword) outfile, err := os.Create(DbName + ".gz") if err != nil { panic(err) } outfile = cmd.Stdout ...
  • go语言exec包的使用

    千次阅读 2019-03-10 17:19:11
    有时候我们的go程序需要执行外部的命令,比如执行linux shell命令,一个其他语言(比如C语言)编写的二进制文件,我们都可以通过调用go语言exec包的函数来执行。下面将介绍exec包的一些简单使用例子。 1. exec....

          有时候我们的go程序需要执行外部的命令,比如执行linux shell命令,一个其他语言(比如C语言)编写的二进制文件,我们都可以通过调用go语言exec包的函数来执行。下面将介绍exec包的一些简单使用例子。

    1. exec.Command执行命令

          假设我们要执行调用linux的ping命令,求的5次ping的平均值,可以采用如下方式:

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io"
    	"os/exec"
    	"strings"
    )
    
    func exec_shell(s_cmd string) (string, bool) {
    	cmd := exec.Command("/bin/bash", "-c", s_cmd)
    	stdout, err := cmd.StdoutPipe()
    	if err != nil {
    		log.Error("cmd StdoutPipe error:", err)
    		return "", false
    	}
    	cmd.Start()
    
    	var end_line string
    	reader := bufio.NewReader(stdout)
    	for {
    		line, err2 := reader.ReadString('\n')
    		if err2 != nil || io.EOF == err2 {
    			break
    		}
    		end_line = line
    	}
    
    	fmt.Println(cmd.Process.Pid)
    	return end_line, true
    }
    
    func ping() string {
    	s_cmd := "ping -c 10 127.0.0.1"
    
    	var pline string
    	var b bool
    	if pline, b = exec_shell(s_cmd); b == false {
    		return ""
    	}
    	arr := strings.Split(pline, " ")
    	var a []string
    	if len(arr)-2 >= 0 {
    		a = strings.Split(arr[len(arr)-2], "/")
    	}
    	if len(a) >= 2 {
    		return a[1]
    	}
    	return ""
    }
    
    func main() {
    	for i := 0; i < 10; i++ {
    		str := ping()
    		fmt.Println(str)
    	}
    }

    其中,各个exec函数的简要介绍如下

    func Command(name string, arg ...string) *Cmd
    //方法返回一个*Cmd, 用于执行name指定的程序(携带arg参数)
    
    func (c *Cmd) Run() error
    //执行Cmd中包含的命令,阻塞直到命令执行完成
    
    func (c *Cmd) Start() error
    //执行Cmd中包含的命令,该方法立即返回,并不等待命令执行完成
    
    func (c *Cmd) Wait() error
    //该方法会阻塞直到Cmd中的命令执行完成,但该命令必须是被Start方法开始执行的
    
    func (c *Cmd) Output() ([]byte, error)
    //执行Cmd中包含的命令,并返回标准输出的切片
    
    func (c *Cmd) CombinedOutput() ([]byte, error)
    //执行Cmd中包含的命令,并返回标准输出与标准错误合并后的切片
    
    func (c *Cmd) StdinPipe() (io.WriteCloser, error)
    //返回一个管道,该管道会在Cmd中的命令被启动后连接到其标准输入
    
    func (c *Cmd) StdoutPipe() (io.ReadCloser, error)
    //返回一个管道,该管道会在Cmd中的命令被启动后连接到其标准输出
    
    func (c *Cmd) StderrPipe() (io.ReadCloser, error)
    //返回一个管道,该管道会在Cmd中的命令被启动后连接到其标准错误

    2. go检测目标进程是否存在

    if err = syscall.Kill(pid,0);err == nil {
        fmt.Println("进程存在")
        return 
    }

    3. 杀死进程的方式

    cmd := exec.Command("/bin/sh", "-c", "...........")
    // Go会将PGID设置成与PID相同的值
    cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
    syscall.Kill(cmd.Process.Pid, syscall.SIGKILL)

     

    展开全文
  • <p>I am attempting to create a container with my Go binary in for use as a database migrator.... <p>data-migrator_1 | standard_init_linux.go:190: exec user process caused "exec format error" </div>
  • 背景:使用Goland开发,没有vscode那种保存文件后自动格式化的功能,每次都得Alt+Shift+F来格式化,而且...预期目标是可以开发完成一个项目后,运行一条命令就能格式化项目中除vendor的所有go文件。 实现原理 golan...
  • <p>I have compiled a golang binary that takes 1 argument, generates a PDF file, and then uploads it to AWS S3. The binary works perfectly in the shell, however when trying to execute it using ...
  • <p>my go env <pre><code>GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" ...<pre><code>bash: /usr/local/go/bin/myprog: cannot execute binary file: Exec format error </code></pre> </div>
  • <p>I executing a C executable using exec.Command and exec.Start(). My C executable is in the current directory and this is my code <pre><code>cmd := exec.Command("./a.out") // stdout,err := cmd....
  • <p>I want to exec .exe file with golang and send the output value in web socket. <p>It's work great in linux, when I run an bash file but not working in windows with .exe or .bat file (.bat file run...
  • 参考 Golang 调用 Linux 命令 Package exec Golang - Execute command golang cmd exec timeout
  • <p>if I am in directory A and running the GO code, and I need to copy a file from directory B to directory C , how to do it? I tried adding cmd.Dir = "B" but it can copy the files in "B" directory, ...
  • package main import ( "bytes" ... "os/exec" "path/filepath" "sync" ) type jieguo struct { go_num int Lock sync.Mutex } var searchName string = os.Args[1] var search_result chan str
  • json2go是一个基于Golang开发的轻量json文件解析、转换命令行工具,目前支持转换输出到屏幕、输出到文件两种方式。 功能 json文件读取、解析 golang结构体输出 支持输出方式 输出到屏幕终端 输出到.go文件 安装 ...
  • <pre><code>[root@ping-app-3618687774-abqmo ping-app]# go run main.go start check_server INFO[0000] http.startHttpServer ok, listening 0.0.0.0:8080 source="api.go:106" INFO[0000] Index=ipdata exists=...
  • <p>I would like to wrap a data file (~1MB) to golang app and then use that data in <code>os.exec</code>. The app runs on Linux. <p>How to define the data in the app, as a <code>string</code> or []...
  • go语言execexec包主要涉及一些与命令相关的api,借助这个包的能力,我们可以实现许多的终端命令功能、脚本调用功能。 package main /*********************************************************************/...
  • go语言exec包调用shell命令

    千次阅读 2016-05-23 22:04:15
    工程中需要用到ffmpeg,想直接用exec包调用shell命令。本来以为很简单,结果折腾了一下午,最后查到了解决方案。 假如之前执行报错的语句为: cmd := exec.Command("echo", "'helloworld!'") out, err := cmd....
  • <p>docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"go\": executable file not found in $PATH": unknown. <p>This is ...
  • <pre><code>standard_init_linux.go:185: exec user process caused "no such file or directory" </code></pre> <p>What does it mean? I found some post related with the same message but the thing is that ...
  • go exec 执行exe

    2020-09-07 21:26:21
    command := exec.Command("cmd", "/c", "start", "redis-server") // 第一个参数可以是环境变量path中的任何命令程序,或者指定具体的exe程序 // 后面参数是任意可选的 // 例如 cmd /c start 某个exe ,运行后...
  • <p>I'm trying to get the cksum of one file using Go by executing the command <code>cksum</code>. <p>Getting the below error: <pre><code>exec: "cksum": executable file not found in $PATH </code></pre...
  • <p>I am trying to run a shell command, capture stdout and write that output to a file. However, I seem to be missing a few steps,... go io.Copy(writer, stdoutPipe) cmd.Wait() } </code></pre> </div>
  • It works fine from the command line but not when I try to do the same from Go (using the <code>os/exec</code> library). I have tried almost everything my stupid head could come up with... It works ...
  • golang 日志文件设置

    千次阅读 2019-06-13 14:57:57
    packagemain import( "bufio" "log" "os" "os/exec" "path/filepath" "strings" "time" ) /*获取当前文件执行的路径*/ funcGetCurrPath()string{ file,_:=exec.LookPat...
  • os/exec包提供了执行外部命令的方法,它包装了os.StartProcess函数以便更容易的修正输入和输出,使用管道连接I/O,以及作其它的一些调整。这里记录以下os/eexec包的学习笔记,希望对你有帮助。 1. 执行外部命令 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,953
精华内容 20,381
关键字:

execgo写文件