我正在查看 write 的 Unix 手册页。 http://linux.die.net/man/3/write
在我的应用程序中,我将记录错误、警告和与进程相关的次要信息,这些信息写入日志文件中。我想要的是,如果文件大小变得大于 1GB,那么该进程应该不再能够写入该日志文件。我看到手册页告诉我们可以实现这一点,但写入失败。
如果 write() 请求写入的字节数超出了空间(例如,进程的文件大小限制或介质的物理末端),则仅写入与空间相同的字节数应写入。
这是否需要 ulimit 相关的更改?我不想在服务器级别应用,而只想在我的应用程序的进程级别应用,因此没有必要完全填充磁盘大小。有什么建议我应该在这里做什么吗?我相信解决方案同样适用于 C++。
最佳答案
您可以使用 gnu 资源使用函数来设置和获取每个进程的限制。 Gnu resource usage functions 另一方面,您可以根据大小进行日志轮换。如果日志大小超过一定限制,则创建旧日志的 tar 文件并开始写入新日志。
关于c - 如何在代码中为文件大小分配软限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32872602/