Một tiến trình con kế thừa bất cứ nicegiá trị nào được giữ bởi cha mẹ tại thời điểm nó được chia rẽ (trong ví dụ của bạn 5).
Tuy nhiên, nếu nicegiá trị của tiến trình cha thay đổi sau khi hủy bỏ các tiến trình con, thì các tiến trình con không kế thừa nicegiá trị mới .
Bạn có thể dễ dàng quan sát điều này với công cụ giám sát top. Nếu nicetrường (NI) không được hiển thị theo mặc định, bạn có thể thêm nó bằng cách nhấn fvà chọn I. Điều này sẽ thêm NIcột vào topmàn hình.
* I: NI = Nice value
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1937 root 20 0 206m 66m 45m S 6.2 1.7 11:03.67 X
Thông tin tốt từ man 2 fork
fork () tạo ra một quy trình mới bằng cách sao chép quy trình gọi. Quá trình mới, được gọi là đứa trẻ, là một bản sao chính xác của quy trình gọi, được gọi là cha mẹ, ngoại trừ các điểm sau:
- Đứa trẻ có ID tiến trình duy nhất của riêng nó và PID này không khớp với ID của bất kỳ nhóm quy trình hiện có nào (setpgid (2)).
- ID tiến trình cha mẹ của con giống như ID tiến trình của cha mẹ.
- Đứa trẻ không thừa hưởng khóa bộ nhớ của cha mẹ (mlock (2), mlockall (2)).
- Quá trình sử dụng tài nguyên quy trình (getrusage (2)) và bộ đếm thời gian CPU (lần (2)) được đặt lại về 0 ở trẻ.
- Tập hợp các tín hiệu đang chờ xử lý của trẻ ban đầu trống (sigpending (2)).
- Đứa trẻ không thừa hưởng điều chỉnh semaphore từ cha mẹ của nó (semop (2)).
- Đứa trẻ không kế thừa các khóa hồ sơ từ cha mẹ của nó (fcntl (2)).
- Đứa trẻ không kế thừa bộ định thời từ cha mẹ của nó (setitimer (2), báo động (2), timer_create (2)).
- Đứa trẻ không kế thừa các hoạt động I / O không đồng bộ nổi bật từ cha mẹ của nó (aio_read (3), aio_write (3)), cũng không thừa hưởng bất kỳ bối cảnh I / O không đồng bộ nào từ cha mẹ của nó (xem io_setup (2)).
forktriển khai hợp lý nào .