最近寫一個 Network Programming 的程式,發現在 Mac 一些預設條件會不夠用,需要調一下。
在 MacOSX 10.5.X 下的 ulimit,可用
sudo launchctl limit
得到一些詳細列表,如下表
cpu unlimited unlimited
filesize unlimited unlimited
data 6291456 unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 512 1024
maxfiles 512 unlimited
如果要調,只要用 root 身分改 /etc/launchd.conf 即可,如下
limit maxproc 512 1024
看要調哪個參數,重新開機即可。
但其中 stack 預設 8M 不能用這個來調,若需要,可針對各別程式在 compile 過程給予。
另外 ulimit -p 調 pipe size 的部份,根據此篇,是不能調的,因為程式也會依系統 compile 時,有相依性。
一般 Linux 下 pipe size 有 8*512b,但在 MacOSX 下就只有 1*512b 了,如果有那種 200 個 cat 文字 stdout 導到 pipe write end,而很久之後才接收 pipe read end 的話,在 MacOSX 下就很容易"爆"了,因為隨便一個文件都會超過 512b。
當然,實際的應用很少這樣吧,一般都是 pipe read/write 都接通時,才會傳資料的。
Orignal From: MacOSX 下設定 ulimit