POSIX tidak menentukan bahwa PID dari setiap proses baru diperoleh dengan menambah PID sebelumnya. Itu hanya mengharuskannya menjadi unik.
Pada sistem di mana PID bertambah pada masing-masing fork()
, saya telah mengamati bahwa nilai membungkus setelah mencapai beberapa batas atas (yang menurut pengalaman saya adalah sekitar 15 ). Setelah melilit, PID baru tidak secara bertahap bertambah, karena beberapa nilai PID masih akan digunakan dari siklus sebelumnya.
Seharusnya tidak ada masalah sampai Anda memiliki 2 N secara bersamaan menjalankan proses. Saya menduga sistem akan mengalami beberapa batasan kapasitas jauh sebelum itu terjadi. Dalam hal ini, fork()
panggilan sistem akan gagal dan mungkin diatur errno
ke EAGAIN
atau ENOMEM
( man fork
untuk detail).
Kode yang mengimplementasikan fork
mungkin atau tidak memeriksa apakah ada PID yang tersedia. Itu mungkin tidak mengganggu, karena mengasumsikan bahwa sumber daya sistem akan habis sebelum sampai ke titik itu, atau mungkin memiliki pemeriksaan eksplisit demi kelengkapan dan untuk menangani kemungkinan masa depan. Saya belum memeriksa, dan jika saya punya saya hanya bisa alamat kernel mana pun yang saya lihat.