关闭或重新启动后处理文件的困难
Difficulties with the handling of files after shutdown or reboot
我写了一个小应用程序,它能够记录一些数据,并通过流将其写入文件:
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()更改了目录,一切都像符咒一样工作。
相关文章:
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- UE4 - Visual Studio在我从编辑器添加新的c ++文件后无法打开任何源文件 - UBT_COMPILED
- Windows std::fstream 修改文件后打开()?
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败
- 保存json文件后如何返回文件路径
- 将结构写入二进制文件后,该文件仍然具有正常字符,而不是不可读字符
- 以C++读取文件并处理可能的错误的便携式方法
- c++ - 将大文件记录处理到 cpp 容器的最有效方法
- 使用RapidJson凝结JSON文件后,如何将输出存储在C 字符串中
- CGAL:加载.off文件后,如何访问顶点颜色
- 使用 fstream 读取文件后,我无法立即写入文件
- 如何在为类创建 .h 和 .cpp 文件后删除错误?C++
- C++ Direct2D - 从笔记本电脑移动正弦文件后出现链接器错误 2019
- 如何在cmake生成完文件后自动制作
- 制作文件后启用cmake选项/标志
- 将预处理更改为文件后出现错误1错误LNK1104
- 关闭或重新启动后处理文件的困难