我正在使用以下方法生成一个 java 应用程序(用于查询本地数据库的 REPL):
repl = = require('child_process').spawn('java', ['-cp', '...list of libs...', ,{ cwd: '...path to env...', env: process.env, customFds: [-1, -1, -1] });
REPL 加载良好,因为我可以在 stdout 中看到它的输出,但 stdin.write 命令不会执行。然而,我可以直接将它们写入 Node 进程本身的控制台窗口(这很奇怪,因为我没有 .resume() 它)。 我已经打印出了生成进程的标准输入,它看起来像这样:
{ _handle:
{ writeQueueSize: 0,
socket: [Circular],
onread: [Function: onread] },
_pendingWriteReqs: 0,
_flags: 0,
_connectQueueSize: 0,
destroyed: false,
bytesRead: 0,
bytesWritten: 0,
allowHalfOpen: undefined,
writable: true,
readable: false }
似乎没有定义“fd”,并且 .read
返回 false。如何解决这个问题?
(这都是在Windows机器上, Node v0.6.6)
谢谢
最佳答案
文档指出 the customFds
option was deprecated特别是因为他们无法让它在 Windows 上运行。
虽然 -1
数组意味着不应使用它,但由于整个选项已被弃用,请尝试将其完全删除,看看是否可以解决您的问题。
关于node.js - 在 stdin 中写入生成的 child_process 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688398/