Một tiến trình con kế thừa bất cứ nice
giá 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 nice
giá 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 nice
giá 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 nice
trườ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 f
và chọn I
. Điều này sẽ thêm NI
cột vào top
mà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)).
fork
triển khai hợp lý nào .