2016-09-21 7 views
2

가끔 프로세스가 실행되는 데 시간이 오래 걸립니다. 제 질문은이 프로세스 시간을 제한하는 방법이 있습니까? 예를 들어 3 분 후에이 과정을 중단 할 수 있습니까?노드 생성 프로세스가 타임 아웃을 확인합니다

+0

가능한 복제 http://stackoverflow.com/questions/18694684/spawn-and-kill-a-process-in-node-js – abdulbarik

답변

2

제한 시간 내에 process.kill을 사용할 수 있습니다. 그러나 아이가 해고되기 전에 끝내면 타임 아웃을 취소하는 것을 잊지 마십시오.

이 예를 살펴 보자

var seconds = process.argv[2] || 2; 
var spawn = require('child_process').spawn; 
var child = spawn('bash', ['child.sh'], {detached: true}); 
var stopped; 
var timeout = setTimeout(() => { 
    console.log('Timeout'); 
    try { 
    process.kill(-child.pid, 'SIGKILL'); 
    } catch (e) { 
    console.log('Cannot kill process'); 
    } 
}, seconds*1000); 
child.on('error', err => console.log('Error:', err)); 
child.on('exit',() => { console.log('Stopped'); clearTimeout(timeout); }); 
child.stdout.on('data', data => console.log(data.toString())); 

기본적으로 :

#!/bin/bash 
sleep 3 
echo DATA FROM CHILD 

이 그 아이를 생성합니다 노드 프로그램이 3 초 후에 반환 child.sh입니다

을 자식이 필요로하는 것보다 짧고 자식이 죽을 2 초를 기다리지 만 명령 줄 인수로 다른 초 수를 추가 할 수 있습니다.

node nodeprogram.js 10 

어린이가 끝내기에 충분합니다.