在stdin中写入生成的child_process不起作用

时间:2012-03-13 16:50:11

标签: node.js

我使用:

生成一个java App(用于查询本地数据库的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命令没有完成。然而,我可以直接在节点进程本身的控制台窗口中编写它们(这很奇怪,因为我没有.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',并且.readable也返回false。怎么解决这个问题? (这都是在windows机器上,节点v0.6.6) 感谢

1 个答案:

答案 0 :(得分:0)

文档明确指出the customFds option was deprecated,因为他们无法在Windows上使用它。

虽然-1的数组暗示不应该使用它,但由于不推荐使用整个选项,请尝试完全删除它,看看是否能解决问题。