Thực hiện exit, shutdown, thoát chương trình trong Node.js

Thực hiện exit, shutdown, thoát chương trình trong Node.js

Trong Java để thoát chương trình hoặc tắt chương trình bằng code, ta có lệnh System.exit(), với Python là quit(), exit()

Vậy muốn thoát khỏi chương trình Node.js ta phải làm như nào?

Có khá nhiều cách để thoát, tắt chương trình Node.js, mỗi cách thích hợp cho từng tình huống khác nhau.

1. Bắt sự kiện exit trong node.js

Để bắt sự kiện exit trong Node.js ta sử dụng lệnh process.on('exit', callback)

Ví dụ:

console.log('Hello stackjava.com');

process.on('exit', function(code) {  
    return console.log(`App exit with code ${code}`);
});

Demo:

Thực hiện exit, shutdown, thoát chương trình trong Node.js

Đầu vào của callback là một exit code, Node.js hiểu exit code = 0 là thành công, khác 0 là thất bại.

2. Các cách thoát chương trình Node.js

2.1 Sử dụng process.exit() để tắt tiến trình Node.js

process.exit được dùng để tắt tiến trình Node.js hiện tại với đầu vào là một exit code.

process là một biến global và không cần phải require hay import để sử dụng, do đó ta có thể gọi process.exit ở bất kỳ vị trí nào trong chương trình.

Ví dụ:

setInterval((function() {  
    console.log('Hello stackjava.com');
}), 1000);

// tắt chương trình sau 3s
setTimeout((function() {  
    return process.exit(10);
}), 3000);

process.on('exit', function(code) {  
    return console.log(`App exit with code ${code}`);
});

Nếu mình không có đoạn process.exit(10) thì chương trình cứ cách 1s lại in ra Hello stackjava.com và lặp mãi mãi, tuy nhiên vì có lệnh process.exit(10) với timeout là 3s nên nó sẽ chỉ in ra dòng Hello stackjava.com đúng 2 lần và tắt chương trình với exit code là 10.

Các cách thoát chương trình Node.js

2.2 Sử dụng process.kill() để tắt tiến trình Node.js

process.kill cũng được dùng để tắt tiến trình Node.js, tuy nhiên đầu vào của nó là một process id. Tức là nó có thể tắt một tiến trình Node.js khác (tắt một chương trình Node.js khác). Do đó process.kill rất hữu ích trong trường hợp có nhiều tiến trình node.js cùng chạy.

Ví dụ:

setInterval((function() {  
    console.log('Hello stackjava.com');
}), 1000);

setTimeout((function() {  
    return process.kill(process.pid);
}), 3000);

Trong đó process.pid chính là process id của tiến trình hiện tại.

Demo:

2.2 Sử dụng process.kill() để tắt tiến trình Node.js

2.3 Sử dụng process.abort() để tắt tiến trình Node.js

Khác với process.kill và process.exit, process.abort() thực hiện tắt tiến trình Node.js ngay lập tức và tạo ra một core file.

Ví dụ:

setInterval((function() {  
    console.log('Hello stackjava.com');
}), 1000);

setTimeout((function() {  
    return process.abort();
}), 3000);

Demo:

2.2 Sử dụng process.kill() để tắt tiến trình Node.js

 

 

Okay, Done!

References:

https://nodejs.org/api/process.html

stackjava.com