快速关闭所有打开的文件描述符
时间:2010-08-12 来源:xiaosuo
int close_all_fd(void) |
且不论当lim.rlim_curr为RLIM_INFINITY的时候,只关闭前1024个文件描述符是否充分,单单这个遍历所有可能打开的文件描述符就有些让人觉得不爽。值得庆幸的是现在的系统调用都很快,不然这么多系统调用谁知道会耗费多久时间啊。并且,通常情况下,守护进程启动的时候,打开的文件描述符就不多,为了少数几个描述符就如此大费周章不值当。故而我又转动我邪恶的小脑瓜,捣鼓出了以下奇技淫巧:
int close_all_fd(void) |
代码面前了无秘密,故不再费口舌解释。上测试程序:
#define MYPERF |
测试结果:
xiaosuo@gentux test $ ./apue.out 0.000147 xiaosuo@gentux test $ ./mine.out 0.000123 xiaosuo@gentux test $ ./apue.out 0.000150 xiaosuo@gentux test $ ./mine.out 0.000109 xiaosuo@gentux test $ ./apue.out 0.000156 xiaosuo@gentux test $ ./mine.out 0.000109 |