我一直在编写一个Go服务器,它充当一大块Node.js的子进程。
package main
import (
"bufio"
"encoding/json"
"fmt"
"os"
)
// IPC delimiter
const EOT byte = 3
func main() {
// Listen on stdin for messages sent from the parent process.
reader := bufio.NewReader(os.Stdin)
for {
input, err := reader.ReadString(EOT)
if err != nil {
fmt.Printf("sockets: failed to read from stdin: %v", err)
if err == io.EOF {
return
}
continue
}
// Strip EOT bye
input = input[:len(input) - 1]
var payload Payload
if err := json.Unmarshal([]byte(input), &payload); err != nil {
fmt.Printf("sockets: failed to read from stdin: %v", err)
continue
}
}
}
但是,使用这样的stdin / stdout可以防止这段代码能够登录到控制台,因为父进程正在使用stdouts句柄。理想情况下,我会使用文件描述符4来利用Node如何使用它,唯一的问题是我对Windows的细节很无能为力。我怎样才能在Windows上使用/ dev / fd / 4的等效(如果有的话)?
PS:如果有更好的方法来处理stdin的阅读,那对我也有很大帮助。