thực hiện mà không cần ngã ba
Có ít nhất hai lý do tại sao bạn muốn làm một việc như vậy:
- Chuỗi tải. Hình ảnh quá trình hiện tại được thay thế bằng một cái gì đó khác nhau.
- Khởi động lại chương trình hiện đang chạy (ví dụ có thể xảy ra khi bạn SIGHUP hoặc quá trình máy chủ như vậy, tải lại mọi thứ và thực hiện một khởi đầu hoàn toàn mới). Theo một cách nào đó, người ta có thể lập luận rằng đây là tải chuỗi, chỉ trùng hợp với cùng một chương trình.
ngã ba mà không thực hiện
Đó là điều mà mọi daemon làm mỗi khi nó bắt đầu (thực tế là hai lần). Điều này thực hiện một số điều, trong số đó, vỏ không bị treo (vì quá trình ban đầu mà vỏ chờ kết thúc) và daemon không còn được điều khiển bởi thiết bị đầu cuối, vì vậy việc đóng cửa sổ vỏ sẽ không giết daemon.
Một cách sử dụng phổ biến khác là giả mạo trẻ em công nhân, vốn đã nổi tiếng bởi máy chủ web apache khoảng 25 năm trước (ngày nay điều này không còn được coi là tình trạng của nghệ thuật nữa do rất dễ xảy ra sự cố sấm sét, nhưng nó chắc chắn cung cấp máy chủ đơn giản nhất, mạnh mẽ nhất có thể).
Tuy nhiên, một cách sử dụng phổ biến khác là tạo một ảnh chụp nhanh nhất quán. fork
không chỉ tạo ra một quy trình, nó còn sao chép (trên lý thuyết, trong thực tế, nó chỉ đánh dấu các trang sao chép trên ghi) không gian địa chỉ. Điều này (về nguyên tử) tạo ra một ảnh chụp nhanh dữ liệu chương trình hoàn chỉnh mà phụ huynh không còn có thể sửa đổi.
Một số chương trình tận dụng điều đó. Ví dụ, redis lưu dữ liệu vào đĩa (ở trạng thái nhất quán) đồng thời sửa đổi tập dữ liệu đồng thời. Điều này chỉ hoạt động vì fork
đã tạo một ảnh chụp nhanh nhất quán mà không thấy các sửa đổi được thực hiện bởi quy trình cha.