私はyaml設定ファイルで指定するgoファイルを実行し、構造体にバイト単位で送信します。どうすればこのことができますか?Go Stdin Stdout通信
私はこの
のために標準入出力を使用することができると考えた。しかし YAMLの設定を、それを把握することはできません。
subscribers:
temp:
topics:
- pi/+/temp
action: ./temp/tempBinary
これは私のコードです:
client.Subscribe(NewTopic(a), func(c *Client, msg Message) {
cmd := exec.Command(v.Action)
// I actually want to send [msg] to it so it can be used there
cmd.Stdin = bytes.NewReader(msg.Bytes())
if err := cmd.Start(); err != nil {
c.Logger.Infof("Error while executing action: %v", err)
} else {
c.Logger.Info("Executed command")
}
// I want to handle responses from the called binary
var out bytes.Buffer
cmd.Stdout = &out
c.Logger.Infof("Response: %v", out)
})
Iどのように私はこれを行うことができるかを把握することはできません。
Message.Bytesの実装を探していますか?すべてのメッセージを表すことができるすべてのエンコーディングが行います。 [the encoding/* packages](https://golang.org/pkg/encoding/#pkg-subdirectories)を参照してください。一般的な選択肢は、encoding/jsonとencoding/gobです。 – Peter
2番目の考えでは、エンコーディング/ゴブはすべてのアクションがGoプログラムである場合にのみ有用です。 – Peter