ssh做的网站找郴州一家做网站的公司电话
ssh做的网站,找郴州一家做网站的公司电话,检测网站的seo效果,小学生做网站软件软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,下面我们就来看看如何使用C实现这一功能吧
软件开发过程中经常会用到配置文件#xff0c;某些应用场景要求在软件运行时动态修改配置文件#xff0c;此时…软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,下面我们就来看看如何使用C实现这一功能吧
软件开发过程中经常会用到配置文件某些应用场景要求在软件运行时动态修改配置文件此时就需要监控配置文件是否被修改如果修改了重新加载。
FileWatcher.h
#ifndef FILEWATCHER_H
#define FILEWATCHER_H#include ctime
#include chrono
#include string
#include thread
#include atomictypedef std::chrono::system_clock Clock;
typedef std::chrono::durationlong long, std::micro Duration;
typedef std::chrono::time_pointClock, Duration Time;template typename FromDuration
inline Time time_cast (std::chrono::time_pointClock, FromDuration const tp)
{return std::chrono::time_point_castDuration, Clock (tp);
}inline Time now ()
{return time_cast(Clock::now ());
}inline Time from_time_t (time_t t_time)
{return time_cast(Clock::from_time_t (t_time));
}struct FileInfo
{Time mtime;off_t size;
};class FileWatcher
{
public:FileWatcher(const std::string file, unsigned int millis);~FileWatcher();protected:void run();private:bool checkForFileModification();void updateLastModInfo();bool getFileInfo(FileInfo *fi, const std::string name);private:FileInfo m_lastFileInfo;std::string m_file;unsigned int const m_waitMillis;std::atomic_bool m_stopped;std::thread m_thread;
};#endif // FILEWATCHER_H
FileWatcher.cpp
#include FileWatcher.h
#include tchar.h
#include iostreamFileWatcher::FileWatcher(const std::string file, unsigned int millis): m_file(file), m_waitMillis(millis), m_stopped(false), m_thread(FileWatcher::run, this)
{m_lastFileInfo.mtime time_cast(Clock::now ());m_lastFileInfo.size 0;updateLastModInfo();
}FileWatcher::~FileWatcher()
{m_stopped true;if (m_thread.joinable()){m_thread.join();}
}void FileWatcher::run()
{while (!m_stopped){bool modified checkForFileModification();if(modified){updateLastModInfo();std::cout File changed std::endl;}std::this_thread::sleep_for(std::chrono::milliseconds(m_waitMillis));}
}bool FileWatcher::checkForFileModification()
{FileInfo fi;if (!getFileInfo(fi, m_file) ){return false;}bool modified fi.mtime m_lastFileInfo.mtime|| fi.size ! m_lastFileInfo.size;return modified;
}void FileWatcher::updateLastModInfo()
{FileInfo fi;if (getFileInfo(fi, m_file)){m_lastFileInfo fi;}
}bool FileWatcher::getFileInfo(FileInfo *fi, const std::string name)
{struct _stat fileStatus;if (_stat(name.c_str (), fileStatus) -1){return false;}fi-mtime from_time_t(fileStatus.st_mtime);fi-size fileStatus.st_size;return true;
}
main.cpp
#include FileWatcher.h#include iostreamint main(int argc, char *argv[])
{char filePath[1024] {0};// 获取绝对路径._fullpath(filePath, config.txt, 1024);std::cout filePath std::endl;FileWatcher fw(filePath, 1000);system(pause);return 0;
}
这里config.txt和可执行文件同一目录每次修改config.txt就会打印File changed
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87284.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!