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