有更簡單的方法來做到這一點,而不是通過實驗。
大多數Unix系統提供ulimit
來顯示您帳戶中的各種軟(即用戶定義的)和硬(即管理員定義的)限制。例如,這裏是在OS X上
$ ulimit -a -S
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
$ ulimit -a -H
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) unlimited
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 65532
cpu time (seconds, -t) unlimited
max user processes (-u) 1064
virtual memory (kbytes, -v) unlimited
我的軟,硬限制雖然系統可以支持更多的進程,你的程序將通過這些限制的限制。我限制在709(什麼奇數)的進程而它在單一時間提高到1064
的最大進程數是由pid_t
的大小,往往在內核中定義的限制的限制。有關更多詳細信息,請參閱this answer以及this answer。
你可以做到這一點通過使用一個計數器,計數器遞增,同時得到了一個叉。 –
它的工作原理,但需要使用只有他們的ID比較找到最大數量。 –