- 論壇徽章:
- 0
|
每一個特定的系統(tǒng)都會有其資源的limits,這些限制有的時候在runtime用到,或者在runtime進(jìn)行確定。
#include
long sysconf( int name )
使用sysconfig(_ SC_OPEN_MAX )可以獲得進(jìn)程打開文件的最大值
文件描述符 file descriptor fds
對于內(nèi)核而言,所有打開文件的由fds引用。Fds為非負(fù)整數(shù)當(dāng)打開文件或者create文件的時候,內(nèi)核向進(jìn)程返回一個fds。
現(xiàn)在,在實(shí)際的機(jī)器上作下測試(環(huán)境 sparc platform solaris 8 on sun blade 150)
# cd proc
# ls 下面列出系統(tǒng)得進(jìn)程
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并非是唯一的每一個進(jìn)程都有對應(yīng)的fd。
通常在shell中 0,1,2對應(yīng)著標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,錯誤。
文件描述符的范圍是0~OPEN_MAX
那么下面的代碼也容易理解了
# include
for ( i = 0; i
close ( i );
通常這代碼序列存在于守護(hù)進(jìn)程,用來關(guān)閉所有的打開文件。
在UNIX的標(biāo)準(zhǔn)中,OPEN_MAX在一個進(jìn)程的生命周期中,是不可改變的,可是,商業(yè)化的UNIX,
UNIX SYSTEM V是可以通過setrlimit()函數(shù)動態(tài)的改變打開文件數(shù)的限制。
參考:Advanced Programming in The Unix Environment .作者: Steven
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/1188/showart_2920.html |
|