Sắp xếp, đường ống hoạt động như thế này: đầu tiên nó thực thi lệnh đầu tiên và sau đó là lệnh thứ hai trong trường hợp của bạn.
Đó là, chúng ta hãy A|B
là lệnh được đưa ra. Sau đó, không chắc chắn A
hoặc B
bắt đầu trước. Chúng có thể bắt đầu cùng một lúc nếu có nhiều CPU. Một đường ống có thể chứa một lượng dữ liệu không xác định nhưng hữu hạn.
Nếu B cố gắng đọc từ đường ống, nhưng không có dữ liệu, B
sẽ đợi cho đến khi dữ liệu đến. Nếu B
đang đọc từ đĩa, B
có thể có cùng một vấn đề và cần đợi cho đến khi việc đọc đĩa kết thúc. Một sự tương tự gần hơn sẽ được đọc từ bàn phím. Ở đó, B
sẽ cần phải đợi người dùng gõ. Nhưng trong tất cả các trường hợp này, B đã bắt đầu thao tác "đọc" và phải đợi cho đến khi kết thúc. Nhưng nếu B
là một lệnh sao cho chỉ cần một phần đầu ra A
thì sau một thời điểm nhất định B
đạt đến mức đầu vào s A
sẽ bị SIGPIPE tiêu diệt
Nếu A
cố gắng ghi vào đường ống và đường ống đã đầy, A
phải chờ một số phòng trong đường ống trở nên miễn phí. A
có thể có cùng một vấn đề nếu nó được ghi vào một thiết bị đầu cuối. Một thiết bị đầu cuối có kiểm soát dòng chảy và có thể kiểm duyệt tốc độ của dữ liệu. Trong mọi trường hợp, A
nó đã bắt đầu thao tác "ghi" và sẽ đợi cho đến khi thao tác ghi kết thúc.
A
và B
đang hành xử như các đồng xử lý, mặc dù không phải tất cả các đồng xử lý sẽ giao tiếp với một đường ống. Không phải là toàn quyền kiểm soát khác.
-m
lý lẽ.