线上程序不断重新启动,查看log发现是进程由于SIGXFSZ信号退出。对过大的文件进行操作的时候会产生此信号,一般仅仅在32位机器上出现,文件限制大小为2G。用lsof查看进程打开的文件,果然有一个文件达到2G。
解决方式:编译时加上參数:-D_FILE_OFFSET_BITS=64;代码中调用lseek时參数为off_t(不要为int或long,否则在32位和64位中表现不同)。
附上一个链接,linux大文件支持:http://users.suse.com/~aj/linux_lfs.html,如今64位系统非常少关注这个问题了。