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:
Đầ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.
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.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:
Okay, Done!
References: