如何对文件“加锁”
(1)使用open系统调用,设置打开参数为O_EXCL。这种文件锁的方式打开的文件是对整个文件加锁。
(2)使用fcntl系统调用。这种文件锁的方式打开的文件是对文件分区域加锁。
(3)使用lockf函数。这种文件锁的方式打开的文件是对文件分区域加锁。
查看Linux下可以同时打开的最大文件描述符数
cat /proc/sys/fs/file-max
这个值和当前系统的内存大小有关
查看select()所支持的最大文件描述符监视数目
一般是在/usr/include/bits/typesizes.h中定义的宏__FD_SETSIZE
#define __FD_SETSIZE 1024
</p>
提高select()机制实现的并发服务程序的并发连接数限制
方法(1):修改__FD_SETSIZE定义,重新编译内核
方法(2):采用多进程方案(参考apache的1.3.x的并发实现)
Linux临时文件操作相关的C API
#include <stdio.h>
char *tmpnam(char *s); /* 生成一个系统内唯一的临时文件名 */
FILE *tmpfile(void); /* 生成一个系统内唯一的临时文件名并打开这个文件 */
#include <stdlib.h>
char *mktemp(char *template);
int mkstemp(char *template); /* 创建一个系统内唯一的临时文件,权限为0600 */
int mkostemp (char *template, int flags); /* 创建一个系统内唯一的临时文件,可以通过flags参数指定类似open函数的文件打开方式 */
NOTE: 通过fileno函数可以将FILE *类型的文件流转换为底层的file descriptor。这在很多的文件操作函数中都会用到该函数。