2012-07-20 2 views
0

node.js를 사용하고 Express를 사용하여 브라우저를 통해 작동 할 수있는 홈 미디어 센터 용 컨트롤러를 만듭니다.Node.js vlc 하위 프로세스가 명시 적으로 작동하지 않음

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 } } 

. 예를 들어 'vlc'을 'gedit'로 바꾸면 텍스트 편집기가 예상대로 정확하게 나타납니다.

누구에게이 아이디어가있을 수 있습니까?

답변

2

이것은 직설적 인 일이지만, VLC 프로세스가 "실행 중"이라고 말하기 전에 조기에 테스트를 끝내는 것이 틀림 없습니다.

이처럼 실행 :

var spawn = require('child_process').spawn; 
var vlc = spawn('vlc'); 
vlc.on('exit', function(code){ 
    console.log('Exit code: ' + code); 
    //EXIT TEST HERE 
}); 

Spawn Documentation.

편집 : 그냥 'test.js'을보고 당신이 테스트를 실행 알았는데. 익스프레스 코드의 관련 부분을 게시하십시오.

+0

게시 한 코드를 .js 파일에 복사 한 후 node :'sudo node .js' 명령으로 실행했습니다. 나는 출구 코드 1을 곧바로 얻는다. 내가 고려하지 않은 사용 권한이 있는지 궁금합니다. 즉, gedit 및 기타 프로그램은 정상적으로 실행되는 것 같습니다. 내가 뭘 놓치고 있는지 궁금해. –

+0

호기심에서 나는'chmod 777'을 재귀 적으로 전체 디렉토리에 적용 해 보았습니다. 도움을 주셔서 감사합니다. 예를 들어 제가이 문제에 정말 도움이되었습니다. :) –

관련 문제