我正在使用 node.js 和 express 为我的家庭媒体中心创建一个可以通过浏览器操作的控制器。
我在生成 VLC 进程时遇到了很多麻烦,但奇怪的是,它只有在从节点提示符执行时才有效,而不是在从文件运行时。
这是我测试过的:
在节点命令行/解释器中:require('child_process').spawn('vlc');
这正如我所料,我可以看到 vlc 窗口打开并在屏幕上持续存在。
如果我采用完全相同的代码行并将其放在另一个文件中(例如 test.js)并从命令行运行它,则没有任何反应node test.js
。几秒钟后注销子进程对象会给我这个:
{ _closesNeeded: 3,
_closesGot: 3,
signalCode: null,
exitCode: 1,
killed: false,
_internal: null,
pid: 11837,
stdin:
{ _handle: null,
_pendingWriteReqs: 0,
_flags: 0,
_connectQueueSize: 0,
destroyed: true,
bytesRead: 0,
bytesWritten: 0,
allowHalfOpen: undefined,
writable: false,
readable: false,
_connecting: false,
_connectQueue: null,
_idleNext: null,
_idlePrev: null },
stdout:
{ _handle: null,
_pendingWriteReqs: 0,
_flags: 1,
_connectQueueSize: 0,
destroyed: true,
bytesRead: 0,
bytesWritten: 0,
allowHalfOpen: undefined,
writable: false,
readable: false,
_events: { close: [Function] },
_connecting: false,
_connectQueue: null,
_idleNext: null,
_idlePrev: null },
stderr:
{ _handle: null,
_pendingWriteReqs: 0,
_flags: 1,
_connectQueueSize: 0,
destroyed: true,
bytesRead: 215,
bytesWritten: 0,
allowHalfOpen: undefined,
writable: false,
readable: false,
_events: { close: [Function] },
_connecting: false,
_connectQueue: null,
_idleNext: null,
_idlePrev: null } }
对此特别奇怪的是,我可以以相同的方式启动其他程序并且它可以工作。例如,用“gedit”替换“vlc”会导致文本编辑器完全按预期显示。
有人知道这可能是什么吗?