如何使用Windows上的文件描述符4(或其等效)



我一直在写一台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 hange。理想情况下,我会使用文件描述符4来利用节点的使用方式,只有问题是我对Windows的细致细节毫无意义。我如何使用Windows上IPC的等效(如果有)/dev/fd/4?

ps:如果有一种更好的方法来处理stdin的阅读,这也会对我有很大帮助。

您可以尝试os.NewFile

f := os.NewFile(4, "my_fd_4")

相关内容

  • 没有找到相关文章

最新更新