关闭或重新启动后处理文件的困难

Difficulties with the handling of files after shutdown or reboot

本文关键字:文件 后处理 重新启动      更新时间:2023-10-16

我写了一个小应用程序,它能够记录一些数据,并通过流将其写入文件:

ofstream filename;              
filename.open("filename.ext", ios::out | ios::app);
filename << stuff;

此文件每30秒关闭并重新打开一次。第二个文件";settings.ext";用于定义程序的行为。功能如下:

ifstream input("settings.qib", ios::in);
    string number;
    for (string line; getline(input, line); )
    {
        if (line.find("updateInterval") != string::npos) {
            number = "";
            for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
            updateInterval = stoi(number);
        }
        if (line.find("visibility") != string::npos) {
            number = "";
            for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
            Stealth(stoi(number));
        }
        if (line.find("console") != string::npos) {
            number = "";
            for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
            console = stoi(number);
        }
    }

这是我能想出的最好的办法来读取这样的文件:

0=能见度

1=控制台

30=更新间隔

一切都很好。刷新设置的时间与刷新日志文件的时间相同。

我为整个程序创建了一个注册表项,以便在每次启动时启动,这也很好。但在关机或重新启动后,程序似乎会忽略这两个文件。不会向日志文件中添加新内容,也不会刷新设置。

我猜这与日志文件在关闭期间打开有关,但这也不能解释为什么设置文件没有被触摸。

我读过一些关于WM_ENDSESSION的文章,但我不确定这是否是正确的做法。

我愿意接受各种各样的答案,或者其他实现我目标的方法。

在我配置的多次重新启动后,当前工作目录在启动后声明为/system32。难怪这些文件会被打开。第一:在system32中找不到这样的文件。第二:程序没有在该目录中写入的权限。为了解决这个问题,我使用_chdir()更改了目录,一切都像符咒一样工作。