gpt4 book ai didi

Golang - 管道到外部执行

转载 作者:IT王子 更新时间:2023-10-29 01:59:46 28 4
gpt4 key购买 nike

我正在尝试使用 Go 将电子邮件消息通过管道传输到 sendmail 二进制文件。如果我不取消对 Wait() 调用的注释,则以下代码有效。如果没有注释,程序就会挂起。阅读documentation for wait ,我觉得应该调用它,所以我得出结论,我的示例代码中存在错误。有什么建议吗?

package main

import (
"io"
"os"
"os/exec"
"fmt"
)

func main() {
msg := "From: source@email.address\n"
msg += "To: recipient@email.address\n"
msg += "Subject: Testing\n\n"
msg += "Hello World!\n"
sendmail := exec.Command("/usr/sbin/sendmail", "-t")
stdin, err := sendmail.StdinPipe()
if err != nil {
panic(err)
}
sendmail.Stdout = os.Stdout
sendmail.Stderr = os.Stderr
err = sendmail.Start()
if err != nil {
panic(err)
}
io.WriteString(stdin, msg)
//err = sendmail.Wait()
//if err != nil {
// panic(err)
//}
}

最佳答案

(可能)发生的是 sendmail 正在等待输入完成。

要么在写入后关闭管道,要么(取决于 sendmail 版本和内容)尝试通过“.\n”完成发送作为消息的最后一部分(除了输入被关闭之外,某些版本会接受它) .

关于Golang - 管道到外部执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com