dongmubi4444 2016-11-25 08:10
浏览 162

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

I've been writing a Go server that acts as the child process of a chunk of 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
        }
    }
}

However, using stdin/stdout like this prevents this piece of the code from being able to log to console, as the parent process is using stdouts handle. Ideally I'd use file descriptor 4 for this to take advantage of how Node uses it, Only problem with this is I'm clueless with the nitty gritty details of Windows. How might I be able to use the equivalent (if any) of /dev/fd/4 for IPC on Windows?

PS: if there's a better way to handle reading from stdin, that would also help me a lot.

  • 写回答

1条回答 默认 最新

  • duankong8998 2016-11-25 10:14
    关注

    You can try os.NewFile:

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

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题