线上程序不断重启,查看log发现是进程因为SIGXFSZ信号退出。对过大的文件进行操作的时候会产生此信号,一般只在32位机器上出现,文件大小限制为2G。用lsof查看进程打开的文件,果然有一个文件达到2G

        解决方案:编译时加上参数:-D_FILE_OFFSET_BITS=64;代码中调用lseek时参数为off_t(不要为intlong,否则在32位和64位中表现不同)。

        附上一个链接,linux大文件支持:http://users.suse.com/~aj/linux_lfs.html现在64位系统很少关注这个问题了。

Logo

更多推荐