2017-03-21 2 views
1

icecast에 익숙하지 않은 경우 멀티미디어 서버입니다.gulp-exec 하위 프로세스 즉시 종료

터미널에서 icecast -c ./icecast/icecast.xml을 실행하면 icecast 서버가 시작되어 계속 살아 있습니다.

gulp을 실행할 때마다 node.js 프로세스와 함께이 명령을 실행하고 싶습니다.

나는 내 gulpfile에 다음을 추가했습니다.

import exec from 'gulp-exec' 

... 

const icecastDir = path.resolve(`${__dirname}/icecast/`) 

... 

gulp.task(`icecast`,() => { 
    return exec(`/usr/local/bin/icecast -c ${icecastDir}/icecast.xml`) 
    .on(`data`,() => { 
     console.log(`data`) 
    }) 
    .on(`error`,() => { 
     console.log(`error`) 
    }) 
    .on(`end`,() => { 
     console.log(`end`) 
    }) 
    .on(`close`,() => { 
     console.log(`error`) 
    }) 
    .on(`readable`,() => { 
     console.log(`readable`) 
    }) 
}) 

내 터미널에서 명령 gulp icecast을 실행

는 꿀꺽 꿀꺽는 종료 즉시 다음 Starting 'icecast'...라고합니다. 콜백 중 아무 것도 실행되지 않습니다. 나는 꿀꺽 꿀꺽 마셔야 할 때까지 살아 남기를 정말로 원합니다.

나는 꿀꺽 꿀꺽 일하는 방법에 대한 몇 가지 근본적인 지식을 놓치고있는 것처럼 느껴지지만 꿀꺽 꿀꺽 마심 (또는 꿀꺽 꿀꺽하는듯한) 문서에서는 그런 주제를 언급하는 것을 찾을 수 없다.

답변

0

나는 아주 비슷한 문제가있어서, 단지 명령을 실행하기를 원하면 child_process.exec을 사용해야한다고 경고하는 gulp-exec page has a note이 있음을 알았습니다.

exec(command)을 실행하면 즉시 프로세스가 종료됩니다. 내가 콜백을 포함 꿀꺽-간부의 페이지에 지정된 구문을 시도 할 때 그러나 :

var exec = require('child_process').exec; 

gulp.task('task', function (cb) { 
    exec('ping localhost', function (err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    cb(err); 
    }); 
}) 

는 지금 살아 과정을 유지했다. 내가 표준 출력과 표준 에러 출력을 필요로하지 않았기 때문에 멀리로 얻을 관리 : 난 그냥 나를 위해 일한 무엇을 공유하고, 노드에 정통한 아니에요

var exec = require('child_process').exec; 

gulp.task('task', function (cb) { 
    exec('ping localhost', function (e) { cb(e); }); 
}) 

; 이 솔루션으로 문제가 해결되기를 바랍니다.