Có cách nào để thiết lập dung lượng đường ống của các đường ống được xác định trong tập lệnh Bash (hoặc shell khác) không? Lấy ví dụ
cmd1 | cmd2
Trong các Linux gần đây, dung lượng đường ống được đặt thành 64KB theo mặc định. Tôi biết tôi có thể kiểm soát lượng dữ liệu "được đệm" giữa hai quy trình theo hai cách:
- Sử dụng
buffer(1)
: vdcmd1 | buffer | cmd2
- Sử dụng
fcntl(2)
vớiF_SETPIPE_SZ
cờ từ bên trongcmd1
hoặccmd2
Mỗi giải pháp đều có nhược điểm: buffer
chỉ có thể được sử dụng để tăng bộ đệm; cũng ghi trên dung lượng đường ống mặc định vẫn sẽ yêu cầu đánh thức lệnh hạ lưu. fcntl
, theo như tôi biết, chỉ có thể được gọi từ bên trong cmd1
hoặc cmd2
.
Câu hỏi của tôi là: có cách nào, khi vỏ tạo ra đường ống, để xác định trong vỏ bao nhiêu công suất ống phải có?