go - 在 Golang 中将字符串通过管道传输到命令的 STDIN

标签 go subprocess pipe exec piping

我想在 Golang 中复制以下 subprocess.run 函数调用。正确的方法是什么?

subprocess.run(['kinit', username], input=password.encode())

到目前为止,我已经想出了如何使用 exec.Command 来运行外部命令,但让我感到困惑的是将字符串作为输入传递给该命令的 STDIN . Python 的 subprocess.run 有一个方便的 input 参数来处理这个问题,我怎样才能在 Golang 中获得类似的结果?

最佳答案

我知道怎么做了。

package main

import "os/exec"
import "strings"

func main() {
    cmd := exec.Command("kinit", username)
    cmd.Stdin = strings.NewReader(password)
    err := cmd.Run()
}

Command对象的Stdin属性就是STDIN管道,我们可以将它设置为一个strings.NewReader 包含输入字符串的对象,以实现与问题中提到的 Python 片段相同的效果。

关于go - 在 Golang 中将字符串通过管道传输到命令的 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49900996/

相关文章:

google-app-engine - 戈朗 : emailing an image stored as a Google Appengine blobstore blob

go - http put 服务器处理大文件

javascript - 如何从 HTML 中的嵌入式 Javascript 中抓取值?

json - 使用 sqlx 包映射到 JSON 的行

python - 我正在尝试使用 shell 命令在 python 中发送邮件。但变量不会在脚本中被替换

python - 无法通过 `python.subprocess` 管道子进程调整大小和转换 Django `model.save()` 中的图像

python - 在python中同时并行化不同的功能

bash - 有没有办法中断 shell 命令但继续包含它的管道?

linux - 执行 p1|p2 的 Bash 指令

linux - linux内核在哪里保存写入管道的数据