golang 在golang中获取shell命令的实时输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 在golang中获取shell命令的实时输出相关的知识,希望对你有一定的参考价值。
package main
import (
"bufio"
"fmt"
"io"
"os"
"os/exec"
"strings"
)
func main() {
cmdName := "ping 127.0.0.1"
cmdArgs := strings.Fields(cmdName)
cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
stdout, _ := cmd.StdoutPipe()
cmd.Start()
oneByte := make([]byte, 100)
num := 1
for {
_, err := stdout.Read(oneByte)
if err != nil {
fmt.Printf(err.Error())
break
}
r := bufio.NewReader(stdout)
line, _, _ := r.ReadLine()
fmt.Println(string(line))
num = num + 1
if num > 3 {
os.Exit(0)
}
}
cmd.Wait()
}
golang中调用c的正确姿势
参考技术A
工程结构如上图所示,我们需要实现的目标是在go文件中调用c文件
foo.c如下:
foo.go如下
foo.h如下:
编译过程如下:
1、先将c文件编译为.o文件,然后生成动态链接库.dylib文件
(1) clang -c foo.c
(2 clang -shared foo.o -o libfoo.dylib
2、在上述的动态链接库生成之后,在foo.go中添加动态链接命令:#cgo LDFLAGS: -L./ -lfoo
需要注意的是
中间不能有空格
以上是关于golang 在golang中获取shell命令的实时输出的主要内容,如果未能解决你的问题,请参考以下文章
golang 在后台执行shell命令,在单独的go例程中运行
003-golang 调用外部命令
golang调用shell命令标准输出阻塞管道
Golang Linux Shell编程
golang获取命令行参数
golang爬坑:操作Linux命令