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.