c - 如何在代码中为文件大小分配软限制

标签 c unix

我正在查看 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/

相关文章:

c - 如何使用 getpass() 和 poll() 来设置时间限制?

linux - 命令行 "cat >> "行为

c - 按位 float 到整数

c - 信号处理程序 sa_sigaction 参数

c - 为什么未初始化的数组中有一些奇怪的数字?

C 在多线程程序中在哪里定义互斥体?

linux - UNIX中的mv命令

无法从打开的文件中读取

linux - Linux 中的 .cfg 和 .conf 有什么区别?

c - 调用 system() 后程序不执行任何操作