我正在像这样存储程序的输出:
./programOutputtingTextToStandartOut > program.log
如果磁盘已满,即使程序仍在运行,输出也会停止写入。有没有办法设置,以便当出现可用磁盘空间时,文件写入会自动恢复 - 而无需重新启动程序?
更新
添加示例程序OutputtingTextToStandartOut。
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
string textLine = "Some text";
ostream* out = &cout;
while (true) {
(*out) << textLine << endl << flush;
usleep(500000);
}
}
答案1
我建议,不要在控制台级别重定向输出,而是使用程序本身来管理日志。因此,在这种情况下,您可以在每 N 次操作时检查磁盘空间。如果磁盘空间小于最低订阅值 - 停止记录。一旦它低于下限 - 重新创建日志文件并继续记录。虽然需要一定程度的代码,但它将是控制日志的最佳方式。