Node.js 为生成的子进程写入stdin不起作用
我正在生成一个java应用程序REPL,用于使用以下命令查询本地数据库:Node.js 为生成的子进程写入stdin不起作用,node.js,Node.js,我正在生成一个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命令无法执行。不过,我可以直接在节
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命令无法执行。不过,我可以直接在节点进程本身的控制台窗口中写入它们,这很奇怪,因为我没有这样做。继续。
我已经打印出生成进程的stdin,它看起来像这样:
{ _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上完成的
感谢文档特别说明了这一点,因为他们无法让它在Windows上工作
虽然-1的数组意味着不应该使用它,但由于整个选项已被弃用,请尝试完全删除它,看看这是否解决了您的问题。文档明确指出,这是因为他们无法让它在Windows上工作
虽然-1的数组意味着不应该使用它,但由于整个选项已被弃用,请尝试将其完全删除,看看这是否解决了您的问题。现在尝试,但没有效果。问题是,如果我选择加载其他进程,例如cmd.exe,它就会工作。就好像子进程正在接管node.js stdin输入,而不是创建自己的输入,这似乎很奇怪。为了将Java程序作为Linux守护进程运行,请将所有输出重定向到文件,以便断开与它的连接。您是否尝试过运行cmd.exe并将java作为流程中类似包装器的第一个参数传递?现在尝试一下,没有效果。问题是,如果我选择加载其他进程,例如cmd.exe,它就会工作。就好像子进程正在接管node.js stdin输入,而不是创建自己的输入,这似乎很奇怪。为了将Java程序作为Linux守护进程运行,请将所有输出重定向到文件,以便断开与它的连接。您是否尝试过运行cmd.exe并将java作为流程中类似包装器的第一个参数传递?