我使用 ulimit -u unlimited 來設定 max user processes 的限制
但是必須要在程式執行前修改他才有用
我要使用程式是以inetd啟動的
而rc.boot 似乎是比 rc[num].d 還要晚執行
所以不能放在 rc.boot 中
而我就在/etc/init.d 下建了一個 shell script 如下
_____________________________________
#!/bin/sh -e
case "$1" in
start|restart)
/bin/bash -c 'ulimit -u unlimited'
;;
stop|reload|force-reload)
;;
esac
______________________________________
並且新增符號連結到/etc/rc2.d/中,檔名為S01ulimit
我使用whereis ulimit 只有出現
ulimit: /usr/include/ulimit.h /usr/share/man/man3/ulimit.3.gz
並沒有ulimit這個程式。依照 man中的說明,他是bash 的shell command
難道說,僅有由bash所執行的東西才具有我所設定的 ulimit -u unlimited??
也就是說,我將他排到rc2.d中,並沒有用
(以上兩行為我最疑惑的地方....我也很懷疑我自己)
那到底我要怎樣讓inetd所啟動的程式使用 ulimit 所設定的值
我網路上有看到可以這樣做
__________________________________
在程式裏使用如下的 code 強制取得儘量大的 resources.
/*
ulimit -a unlimited
*/
{
struct rlimit rl;
rl.rlim_cur = rl.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &rl);
setrlimit(RLIMIT_CPU, &rl);
setrlimit(RLIMIT_DATA, &rl);
setrlimit(RLIMIT_FSIZE, &rl);
setrlimit(RLIMIT_MEMLOCK, &rl);
setrlimit(RLIMIT_NOFILE, &rl);
setrlimit(RLIMIT_NPROC, &rl);
setrlimit(RLIMIT_RSS, &rl);
setrlimit(RLIMIT_STACK, &rl);
}
__________________________________
但是我不知道要怎麼加進去
bbsd的原始碼就有好幾個檔案....不曉得怎麼加...與加在哪裡
by the way......我沒有學過c......僅能看的懂....與稍做修改
對於 c 的函數、架構都不了解