Rate this post

Tiến trình là một đối tượng toàn cục, một thể hiện của EventEmitter, có thể được truy cập từ bất cứ đâu.

Các bài viết liên quan:

Giới thiệu về process trong Node.js

Trong Node.js, đối tượng process đại diện cho quá trình thực thi của ứng dụng Node. Nó cung cấp các phương thức và thuộc tính để tương tác với quá trình hiện tại, quản lý các biến môi trường, xử lý các sự kiện và tương tác với hệ thống tệp tin.

Dưới đây là một số khía cạnh quan trọng về process trong Node.js:

  • Đối tượng process: process là một đối tượng toàn cục có sẵn trong môi trường Node.js và không cần phải được tạo ra một cách rõ ràng. Bạn có thể truy cập vào đối tượng process bất cứ khi nào bạn muốn trong mã của mình.
  • Thông tin về quá trình: Đối tượng process cung cấp thông tin về quá trình thực thi hiện tại, chẳng hạn như ID quá trình, tham số dòng lệnh, thư mục làm việc hiện tại và nhiều thông tin khác. Bạn có thể truy cập các thông tin này thông qua các thuộc tính như process.pid, process.argv, process.cwd() và nhiều thuộc tính khác.
  • Quản lý biến môi trường: Đối tượng process cung cấp thuộc tính process.env để truy cập và quản lý các biến môi trường. Bạn có thể đặt giá trị cho các biến môi trường hoặc truy cập vào các biến môi trường hiện có, như process.env.NODE_ENV để xác định môi trường làm việc của ứng dụng.
  • Xử lý sự kiện và kết thúc quá trình: Bạn có thể sử dụng process để xử lý các sự kiện liên quan đến quá trình như sự kiện exit khi quá trình kết thúc, hoặc sự kiện uncaughtException khi có ngoại lệ không được xử lý. Bạn cũng có thể sử dụng phương thức process.exit() để kết thúc quá trình hiện tại.
  • Quản lý child process: Đối tượng process cho phép tạo, điều khiển và tương tác với các child process. Bạn có thể sử dụng các phương thức như process.spawn(), process.exec(), process.fork() để tạo child process và thực thi các lệnh hoặc tác vụ bất đồng bộ.

process là một phần quan trọng trong Node.js và cung cấp các tính năng mạnh mẽ để quản lý quá trình thực thi và tương tác với môi trường hệ thống. Việc hiểu và sử dụng process hiệu quả sẽ giúp bạn xây dựng ứng dụng Node.js mạnh mẽ và linh hoạt.

Xem thêm Child Process trong Node.js

Tại sao sử dụng process trong Node.js?

Sử dụng đối tượng process trong Node.js mang lại nhiều lợi ích quan trọng. Dưới đây là một số lý do tại sao chúng ta sử dụng process trong Node.js:

  1. Quản lý quá trình: process cho phép bạn quản lý quá trình thực thi của ứng dụng Node.js. Bạn có thể truy cập thông tin về quá trình, chẳng hạn như ID quá trình, thông tin về tham số dòng lệnh và thư mục làm việc hiện tại. Điều này rất hữu ích khi bạn cần theo dõi và kiểm soát hành vi của ứng dụng trong quá trình chạy.
  2. Quản lý biến môi trường: process.env cho phép bạn quản lý các biến môi trường của ứng dụng. Bạn có thể đọc giá trị của các biến môi trường hiện có, như biến NODE_ENV, để xác định môi trường làm việc (như ‘development’, ‘production’, v.v.). Bạn cũng có thể đặt giá trị cho các biến môi trường hoặc sử dụng chúng trong cấu hình của ứng dụng.
  3. Xử lý sự kiện liên quan đến quá trình: process cho phép bạn xử lý các sự kiện quan trọng liên quan đến quá trình. Ví dụ, bạn có thể sử dụng sự kiện ‘exit’ để thực hiện các thao tác sau khi quá trình kết thúc, như giải phóng tài nguyên hoặc ghi lại thông tin. Sự kiện ‘uncaughtException’ cho phép bạn xử lý các ngoại lệ không được xử lý trong mã của bạn và ngăn chặn quá trình bị crash.
  4. Quản lý child process: process cung cấp các phương thức để tạo, điều khiển và tương tác với các child process. Bạn có thể tạo các child process để thực thi các lệnh hoặc tác vụ bất đồng bộ và quản lý chúng từ quá trình cha. Điều này rất hữu ích khi bạn muốn thực hiện các tác vụ song song hoặc giao tiếp với các quy trình khác.
  5. Điều khiển quá trình: process cung cấp phương thức process.exit() để kết thúc quá trình hiện tại. Bạn có thể sử dụng nó để thoát khỏi ứng dụng hoặc thực hiện các thao tác cuối cùng trước khi thoát.

Sử dụng process trong Node.js giúp bạn có quyền kiểm soát và quản lý quá trình thực thi, tương tác với môi trường và xử lý các sự kiện liên quan. Điều này giúp bạn xây dựng ứng dụng mạnh mẽ, linh hoạt và an toàn trong Node.js.

Xem thêm Tìm hiểu về Process trong hệ điều hành

Các phương thức và thuộc tính quan trọng của process

Trong Node.js, đối tượng process cung cấp nhiều phương thức và thuộc tính quan trọng để tương tác với quá trình hiện tại. Dưới đây là một số phương thức và thuộc tính quan trọng của process:

Phương thức:

  1. process.exit([code]): Kết thúc quá trình hiện tại với mã thoát được chỉ định (mặc định là 0).
  2. process.kill(pid[, signal]): Gửi một tín hiệu đến quá trình có ID quá trình (PID) chỉ định.
  3. process.cwd(): Trả về đường dẫn thư mục làm việc hiện tại của quá trình.
  4. process.on(event, listener): Đăng ký một trình nghe sự kiện cho sự kiện cụ thể của quá trình, chẳng hạn như ‘exit’, ‘uncaughtException’, v.v.

Thuộc tính:

  1. process.argv: Một mảng chứa các đối số dòng lệnh được truyền vào quá trình. Phần tử đầu tiên (process.argv[0]) là đường dẫn của Node.js và phần tử thứ hai (process.argv[1]) là đường dẫn của tệp tin đang được thực thi.
  2. process.env: Đối tượng chứa các biến môi trường. Bạn có thể truy cập giá trị của biến môi trường bằng cách sử dụng process.env.VARIABLE_NAME.
  3. process.pid: ID quá trình của quá trình hiện tại.
  4. process.platform: Nền tảng hệ thống mà Node.js đang chạy trên, chẳng hạn như ‘win32’, ‘linux’, ‘darwin’, v.v.

Đây chỉ là một số phương thức và thuộc tính quan trọng của process trong Node.js. Có nhiều thuộc tính và phương thức khác có sẵn, hãy kiểm tra tài liệu chính thức của Node.js để tìm hiểu thêm chi tiết.

Xem thêm Process Synchronization trong hệ điều hành

Quản lý child process trong Node.js

Trong Node.js, bạn có thể quản lý và tương tác với các child process (quá trình con) bằng cách sử dụng module child_process. Module này cung cấp các phương thức để tạo, điều khiển và giao tiếp với các child process. Dưới đây là một số phương thức quan trọng để quản lý child process trong Node.js:

  1. child_process.spawn(command[, args][, options]): Phương thức này được sử dụng để tạo một child process bằng cách thực thi một lệnh shell. Bạn có thể chỉ định các tham số args để truyền các đối số cho lệnh và options để cấu hình child process.
  2. child_process.exec(command[, options][, callback]): Phương thức này thực thi một lệnh shell và trả về kết quả. Bạn có thể cung cấp các tùy chọn options để cấu hình child process và một hàm callback để xử lý kết quả trả về.
  3. child_process.fork(modulePath[, args][, options]): Phương thức này được sử dụng để tạo một child process bằng cách sao chép mô-đun hiện tại và thực thi nó. Nó hữu ích khi bạn muốn tạo nhiều quá trình con để thực hiện các tác vụ song song.
  4. child_process.execFile(file[, args][, options][, callback]): Phương thức này thực thi một tệp tin thực thi và trả về kết quả. Bạn có thể chỉ định các tham số args để truyền các đối số cho tệp tin thực thi và options để cấu hình child process. Một hàm callback cũng có thể được sử dụng để xử lý kết quả trả về.
  5. child_process.kill(pid[, signal]): Phương thức này được sử dụng để gửi một tín hiệu đến một child process dựa trên ID quá trình (PID) của nó.

Các phương thức trên là một số ví dụ về cách quản lý child process trong Node.js. Bạn có thể sử dụng các phương thức này để tạo, điều khiển và tương tác với các child process trong ứng dụng của mình.

Xem thêm Cơ chế Interested Variable trong hệ điều hành

Xử lý sự kiện liên quan đến process

Trong Node.js, bạn có thể xử lý các sự kiện liên quan đến quá trình thông qua đối tượng process. Dưới đây là một số sự kiện quan trọng mà bạn có thể xử lý:

  1. Sự kiện 'exit': Sự kiện này được kích hoạt khi quá trình chuẩn bị thoát. Bạn có thể sử dụng process.on('exit', handler) để đăng ký một trình xử lý sự kiện cho sự kiện này. Trong trình xử lý, bạn có thể thực hiện các tác vụ cuối cùng trước khi quá trình thoát.
  2. Sự kiện 'uncaughtException': Sự kiện này được kích hoạt khi một ngoại lệ không được xử lý xảy ra trong quá trình. Bạn có thể sử dụng process.on('uncaughtException', handler) để đăng ký một trình xử lý sự kiện cho sự kiện này. Trình xử lý này cho phép bạn ghi nhật ký lỗi hoặc thực hiện các tác vụ khác trước khi quá trình bị crash.

Ví dụ về xử lý sự kiện 'exit':

process.on('exit', (code) => {
  console.log(`Quá trình sẽ thoát với mã thoát là ${code}`);
  // Thực hiện các tác vụ cuối cùng trước khi thoát
});

Ví dụ về xử lý sự kiện 'uncaughtException':

process.on('uncaughtException', (error) => {
  console.error('Ngoại lệ không được xử lý:', error);
  // Ghi nhật ký lỗi hoặc thực hiện các tác vụ khác
});

Bên cạnh các sự kiện trên, còn có nhiều sự kiện khác như 'warning', 'SIGINT', 'SIGTERM''SIGUSR1' mà bạn có thể xử lý. Hãy kiểm tra tài liệu chính thức của Node.js để tìm hiểu thêm về các sự kiện và cách xử lý chúng.

Thuộc tính Process Node.js

Dưới đây là danh sách các thuộc tính quy trình Node.js thường được sử dụng.

PropertyDescription
archtrả về kiến ​​trúc quy trình: ‘arm’, ‘ia32’ hoặc ‘x64’
argstrả về các đối số dòng lệnh dưới dạng một mảng
envtrả về môi trường người dùng
pidtrả về id quy trình của quy trình
platformtrả về nền tảng của quy trình: ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ hoặc ‘win32’
releasetrả về siêu dữ liệu cho bản phát hành nút hiện tại
versiontrả về phiên bản node
versionstrả về phiên bản node và các phụ thuộc của nó

Ví dụ về thuộc tính quy trình Node.js

Hãy xem ví dụ quy trình đơn giản để in kiến ​​trúc, pid, nền tảng và phiên bản của quy trình.

File: process_example1.js

console.log(`Process Architecture: ${process.arch}`);  
	console.log(`Process PID: ${process.pid}`);  
 	console.log(`Process Platform: ${process.platform}`);  
 	console.log(`Process Version: ${process.version}`);  

Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:

node process_example1.js  

Hãy xem một ví dụ quy trình khác để in các đối số dòng lệnh . Ở đây nút được coi là đối số đầu tiên, tên tệp được coi là đối số thứ hai và các đối số dòng lệnh thực tế được coi là đối số thứ ba, thứ tư, thứ năm, v.v.

File: process_example2.js

 	process.argv.forEach((value, index, array) => {  
  	  console.log(`${index}: ${value}`);  
 	});  

Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:

node process_example2.js  

Các phương thức của process Node.js

Dưới đây là danh sách các hàm quy trình Node.js thường được sử dụng.

FunctionDescription
cwd()trả về đường dẫn của thư mục làm việc hiện tại
hrtime()trả về thời gian thực có độ phân giải cao hiện tại trong mảng [giây, nano giây]
memoryUsage()trả về một đối tượng có thông tin sử dụng bộ nhớ.
process.kill(pid[, signal])được sử dụng để giết pid đã cho.
uptime()trả về thời gian hoạt động của quy trình Node.js trong vài giây.

Ví dụ về hàm xử lý Node.js

Hãy xem ví dụ quy trình để in thư mục làm việc hiện tại và thời gian hoạt động của quy trình.

Tệp: process_example3.js

console.log(`Current directory: ${process.cwd()}`);  
console.log(`Uptime: ${process.uptime()}`);  

Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:

node process_example3.js 

Xem thêm Subprocess trong Python

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now