標題: 較深入的limit [打印本頁] 作者: 伯爵的Druid 時間: 2004-10-19 15:12 標題: 較深入的limit 每一個特定的系統(tǒng)都會有其資源的limits,這些限制有的時候在runtime用到,或者在runtime進行確定。
#include
long sysconf( int name )
使用sysconfig(_ SC_OPEN_MAX )可以獲得進程打開文件的最大值
文件描述符 file descriptor fds
對于內(nèi)核而言,所有打開文件的由fds引用。Fds為非負整數(shù)當打開文件或者create文件的時候,內(nèi)核向進程返回一個fds。
現(xiàn)在,在實際的機器上作下測試(環(huán)境 sparc platform solaris 8 on sun blade 150)
# cd proc
# ls 下面列出系統(tǒng)得進程
0 188 238 276 3191 328 361 4621 4754 585 610 630 667
# cd 188
# ls
cred fd lusage object rmap status xmap
# cd fd
# ls
0 1 2 256 3 4 5
# cd . .
# cd . .
# cd 238
# cd fd
# ls
0 1 2 3 4 5 6 7 9
可以看出,fd并非是唯一的每一個進程都有對應(yīng)的fd。
通常在shell中 0,1,2對應(yīng)著標準輸入,標準輸出,錯誤。
文件描述符的范圍是0~OPEN_MAX
那么下面的代碼也容易理解了
# include
for ( i = 0; i
close ( i );
通常這代碼序列存在于守護進程,用來關(guān)閉所有的打開文件。
在UNIX的標準中,OPEN_MAX在一個進程的生命周期中,是不可改變的,可是,商業(yè)化的UNIX,
UNIX SYSTEM V是可以通過setrlimit()函數(shù)動態(tài)的改變打開文件數(shù)的限制。
參考:Advanced Programming in The Unix Environment .作者: Steven