add disk check thread.
This commit is contained in:
parent
8b6ce7f0af
commit
fc5e135c14
@ -14,7 +14,7 @@
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.config.gnu.cross.exe.debug.534720554" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=" parent="cdt.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="">
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.config.gnu.cross.exe.debug.534720554" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="">
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.cross.exe.debug.534720554." name="/" resourcePath="">
|
||||
<toolChain errorParsers="" id="cdt.managedbuild.toolchain.gnu.cross.exe.debug.414193457" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.debug">
|
||||
<option id="cdt.managedbuild.option.gnu.cross.prefix.1212588849" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-linux-gnueabihf-" valueType="string"/>
|
||||
@ -137,6 +137,7 @@
|
||||
</option>
|
||||
<option id="gnu.cpp.link.option.libs.2006599708" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="sqlite3"/>
|
||||
<listOptionValue builtIn="false" value="boost_filesystem"/>
|
||||
<listOptionValue builtIn="false" value="zlog"/>
|
||||
<listOptionValue builtIn="false" value="boost_system"/>
|
||||
<listOptionValue builtIn="false" value="pthread"/>
|
||||
|
||||
@ -74,7 +74,7 @@ std::string GetLocalTimeWithMs(void) {
|
||||
|
||||
char buffer[80] = {0};
|
||||
struct tm nowTime;
|
||||
localtime_r(&curTime.tv_sec, &nowTime); //闂備胶顢婂▔娑㈡晝閵堝洦顐介梺顒€绉寸粈鍡涙煙濞堝灝鏋熼柣锝変憾閺屾稒绻濋崟顐粯闂佸鏉垮鐎规洘顨婃俊鐑藉Χ閸滀焦些闂備礁鎼崯鍐测枖濞戙垹鍨傞幖娣妽閻撯偓閻庡箍鍎卞ú锕傛偩闁秵鐓曢柟閭﹀墯閸e綊鏌f幊閸斿秶绮欐径鎰垫晣闁靛ě鍜佹Х缂傚倷鐒﹀畷妯衡枖閺囥垹鐓濋柤娴嬫杹閸嬫捇鎮烽柇锔叫﹂梺鍛婄懕閹凤拷
|
||||
localtime_r(&curTime.tv_sec, &nowTime); //闂傚倷鑳堕、濠傗枖濞戙垺鏅濋柕鍫濇处椤愪粙姊洪鈧粔瀵哥矆閸℃稒鐓欐繛鍫濈仢閺嬬喖鏌i敐澶夋喚闁哄本绋掔换婵嬪礋椤愵澀绮梻浣割吔閺夊灝顫囬悗瑙勬礃椤ㄥ﹥淇婇悜钘壩ч柛婊€鐒︿簺闂傚倷绀侀幖顐﹀疮閸愭祴鏋栨繛鎴欏灩閸ㄥ倿骞栧ǎ顒€濡介柣鎾亾闁诲骸绠嶉崕鍗灻洪敃鍌涘仼闂侇剙绉甸悡鏇㈡煙闁箑澧柛锝呯秺閺岋絾骞婇柛鏂跨Ф缁瑦寰勯幇鍨櫍闂侀潧臎閸滀焦啸缂傚倸鍊烽悞锕€鐣峰Ο琛℃灃闁哄洢鍨归悡婵嬫煠濞村鏉归柛瀣崌閹兘鏌囬敂鍙箓姊洪崨濠勬嚂闁瑰嚖鎷<EFBFBD>
|
||||
strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", &nowTime);
|
||||
|
||||
char currentTime[84] = {0};
|
||||
@ -110,13 +110,13 @@ int code_convert(const char *from_charset, const char *to_charset, char *inbuf,
|
||||
int InitGpio(unsigned int gpioN, unsigned int inout) {
|
||||
int fd = 0;
|
||||
char tmp[100] = {0};
|
||||
//闂備胶鎳撻悘姘跺箰閸濄儲顫曢柟杈╁€峣o闂佽崵濮抽悞锕傚磿閹跺壙鍥敆閸曨偅顥濋梺鎼炲劵闂勫嫰顢曢敓锟<EFBFBD>
|
||||
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵勫劜椤洟鏌熸潏鈺佲偓宄闂備浇宕垫慨鎶芥倿閿曞倸纾块柟璺哄閸ヮ剦鏁嗛柛鏇ㄥ亝椤ユ繈姊洪幖鐐插姷闂傚嫬瀚伴、鏇㈡晸閿燂拷
|
||||
fd = open("/sys/class/gpio/export", O_WRONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_error(zbt, "open gpio export file error");
|
||||
return 1;
|
||||
}
|
||||
//闂備焦鐪归崹褰掓偪閸ヮ剦鏁嬮柣鐐垫7io
|
||||
//闂傚倷鐒﹂惇褰掑垂瑜版帗鍋柛銉墻閺佸鏌i悙鍨紬io
|
||||
sprintf(tmp, "%d", gpioN);
|
||||
if (write(fd, tmp, strlen(tmp)) < 0) {
|
||||
zlog_error(zbt, "write file operation error:%s", tmp);
|
||||
@ -126,7 +126,7 @@ int InitGpio(unsigned int gpioN, unsigned int inout) {
|
||||
|
||||
close(fd);
|
||||
sleep(1);
|
||||
//闂傚倷鐒﹀妯肩矓閸洘鍋柛鐐插厧io闂備礁鎼崐濠氬箠閹捐绠栭柨鐕傛嫹
|
||||
//闂傚倸鍊烽悞锕€顭垮Ο鑲╃煋闁割偅娲橀崑顏堟煕閻愭彃鍘o闂傚倷绀侀幖顐﹀磹婵犳艾绠犻柟鎹愵嚙缁犳牠鏌ㄩ悤鍌涘
|
||||
#ifdef G2UL_GATEWAY
|
||||
char tmp2[100] = {0};
|
||||
if (gpioN == 507)
|
||||
@ -235,14 +235,14 @@ int gpio_set(unsigned int gpioN, char x) {
|
||||
#endif
|
||||
|
||||
zlog_info(zbt, "set GPIO = %s", tmp);
|
||||
//闂備胶鎳撻悘姘跺箰閸濄儲顫曢柟杈╁€峣o value闂備礁鎼崐绋棵洪敐鍛瀻闁跨噦鎷<E599A6>
|
||||
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵勫劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖顐﹀磹缁嬫5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
fd = open(tmp, O_WRONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_error(zbt, "[%s] open gpio export file error", tmp);
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
//闂佽崵濮崇粈浣规櫠娴犲鍋柛鈩冪⊕閸嬨劑姊婚崼鐔烘创闁归潻鎷<EFBFBD>
|
||||
//闂備浇宕垫慨宕囩矆娴h娅犲ù鐘差儐閸嬵亪鏌涢埄鍐姇闁稿鍔戝濠氬醇閻旂儤鍒涢梺褰掓交閹凤拷
|
||||
if (x) {
|
||||
if (-1 == write(fd, "1", sizeof("1"))) {
|
||||
zlog_error(zbt, "%d write operation value error", gpioN);
|
||||
@ -304,13 +304,13 @@ int gpio_read(unsigned int gpioN) {
|
||||
#ifdef IMX6UL_GATEWAY
|
||||
sprintf(tmp, "/sys/class/gpio/gpio%d/value", gpioN);
|
||||
#endif
|
||||
//闂備胶鎳撻悘姘跺箰閸濄儲顫曢柟杈╁€峣o value闂備礁鎼崐绋棵洪敐鍛瀻闁跨噦鎷<E599A6>
|
||||
//闂傚倷鑳堕幊鎾绘倶濮樿泛绠伴柛婵勫劜椤洟鏌熸潏鈺佲偓宄 value闂傚倷绀侀幖顐﹀磹缁嬫5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
fd = open(tmp, O_RDONLY);
|
||||
if (-1 == fd) {
|
||||
zlog_error(zbt, "%d open gpio export file error", gpioN);
|
||||
return (-1);
|
||||
}
|
||||
//闂佽崵濮村ú鈺咁敋瑜戦妵鎰版晸閿燂拷 value闂備礁鎼崐绋棵洪敐鍛瀻闁跨噦鎷<E599A6>
|
||||
//闂備浇宕垫慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鐗堟櫢闁跨噦鎷<EFBFBD> value闂傚倷绀侀幖顐﹀磹缁嬫5娲晲閸涱亝鐎婚梺璺ㄥ櫐閹凤拷
|
||||
if (-1 == read(fd, &value, sizeof(value))) {
|
||||
zlog_error(zbt, "%d read gpiovalue is fail", gpioN);
|
||||
close(fd);
|
||||
@ -504,14 +504,14 @@ std::string GetRTC(char *timestamp, int &millisecond) {
|
||||
printf("RTC date/time is %d-%d-%d, %02d:%02d:%02d\n", rtc_tm.tm_year + 1900, rtc_tm.tm_mon + 1, rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
sprintf(rtcTime, "%d-%d-%d, %02d:%02d:%02d", rtc_tm.tm_year + 1900, rtc_tm.tm_mon + 1, rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
|
||||
// 闂佽绻愮换鎰板极閸嶇巢_time缂傚倸鍊烽悞锕傚箰婵犳碍鍊垫い鏍ㄧ⊕婵挳鏌熼幑鎰垫綈缂佷緡鍣i弻鐔烘嫚閳╁啰绐旈柣鐘冲姉閸斿穼me_t闂備礁鎼崯顐︽偉閻撳宫娑㈠锤濡も偓缁狅綁鏌ㄩ悤鍌涘
|
||||
// 闂備浇顕х换鎰崲閹版澘鏋侀柛宥囧发_time缂傚倸鍊搁崐鐑芥倿閿曞倸绠板┑鐘崇閸婂灚銇勯弽銊р姇濠殿垱鎸抽弻鐔煎箲閹板灚缍堢紓浣风贰閸o綁寮婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鏂跨┘me_t闂傚倷绀侀幖顐﹀疮椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈傚亾缂佺媴缍侀弻銊╂偆閸屾稑顏<EFBFBD>
|
||||
tm.tm_year = rtc_tm.tm_year;
|
||||
tm.tm_mon = rtc_tm.tm_mon;
|
||||
tm.tm_mday = rtc_tm.tm_mday;
|
||||
tm.tm_hour = rtc_tm.tm_hour;
|
||||
tm.tm_min = rtc_tm.tm_min;
|
||||
tm.tm_sec = rtc_tm.tm_sec;
|
||||
tm.tm_isdst = -1; // 濠电偞鍨堕幐鍝ョ矓閾忣偆绠鹃柛銉墯閸嬨劑鏌曟繛鍨姶婵″弶鍎抽湁闁绘﹩鍠栭埀顒佺墪椤啴鏁撻敓锟<EFBFBD>
|
||||
tm.tm_isdst = -1; // 婵犵數鍋為崹鍫曞箰閸濄儳鐭撻柧蹇e亞缁犻箖鏌涢妷顔煎闁稿鍔戦弻鏇熺箾閸喖濮跺┑鈥冲级閸庢娊婀侀梺缁橈供閸犳牠鍩€椤掍胶澧い顏勫暣閺佹捇鏁撻敓锟<EFBFBD>
|
||||
|
||||
rtc_timestamp = mktime(&tm);
|
||||
|
||||
@ -739,8 +739,8 @@ void ImportConfig(std::string filename) {
|
||||
}
|
||||
|
||||
int UpdataDataNodeConfig(std::string filename) {
|
||||
std::vector<DataNodeInfo> vecDataNode; //濠电姰鍨瑰﹢杈ㄦ櫠濡も偓鍗遍柟瀵稿仧閳绘棃鏌嶈閸撴氨绮欐径鎰垫晜闁告洦鍘介幉鑽ょ磽娴h娈g紓鍌涙皑閹蹭即宕卞☉妯啃曢梺纭呮彧缁犳垵鈻嶉敓锟<EFBFBD>
|
||||
//濠电偛顕慨浼村磿閹绢噮鏁嬪ù鍏兼綑缁€鍌炴煏婢舵盯妾柣鎾寸懅閳ь剚顔栭崰鏍崲閹寸偞娅犻柨鏇楀亾妞ゆ洩缍侀崺鈧い鎺戝濡﹢鏌涢妷顖炴妞ゆ劧鎷<EFBFBD>
|
||||
std::vector<DataNodeInfo> vecDataNode; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸楅亶鏌熺€电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦寰勯幇鍨櫆闂佸憡娲﹂崢浠嬪箟閼姐倗纾藉ù锝堫嚃濞堬絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩槈濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<EFBFBD>
|
||||
//婵犵數鍋涢顓熸叏娴兼潙纾块柟缁㈠櫘閺佸霉閸忓吋缍戠紒鈧崒鐐寸厪濠㈣埖鐩顕€鏌i幘瀵告噮闁逞屽墯椤旀牠宕伴弽顐e床闁瑰鍋炲▍鐘绘煥閺囨浜惧銈嗘穿缂嶄線宕洪埀顒併亜閹烘垵顏╂俊顐o耿閺屾盯濡烽鐐搭€嶅銈嗗姧閹凤拷
|
||||
std::ifstream csv_data(filename, std::ios::in);
|
||||
int iRet = 0;
|
||||
if (!csv_data.is_open()) {
|
||||
@ -748,16 +748,16 @@ int UpdataDataNodeConfig(std::string filename) {
|
||||
return -1;
|
||||
}
|
||||
std::string line;
|
||||
std::vector<std::string> words; //濠电姰鍨瑰﹢杈ㄦ櫠濡も偓鍗遍柟瀵稿仧閳绘棃鏌嶈閸撴氨绮欐径鎰垫晜闁告洦鍘介幉鑽ょ磽娴h娈g紓鍌涙皑閹蹭即宕卞☉妯啃曢梺纭呮彧缁犳垵鈻嶉敓锟<EFBFBD>
|
||||
std::vector<std::string> words; //婵犵數濮伴崹鐟帮耿鏉堛劍娅犳俊銈傚亾閸楅亶鏌熺€电ǹ浠ч柍缁樻閺屽秷顧侀柛鎾存皑缁瑦寰勯幇鍨櫆闂佸憡娲﹂崢浠嬪箟閼姐倗纾藉ù锝堫嚃濞堬絿绱撻崒娑欑殤闁硅弓鍗冲畷鍗炩槈濡晝鏇㈡⒑绾懏褰х紒鐘冲灥閳诲秹鏁撻敓锟<EFBFBD>
|
||||
std::string word;
|
||||
|
||||
DataNodeInfo dataNode;
|
||||
// ------------闂佽崵濮村ú鈺咁敋瑜戦妵鎰板炊椤掆偓閺嬩線鏌eΔ鈧悧鍡欑矈閿燂拷-----------------
|
||||
// 闂佽崵濮村ú鈺咁敋瑜戦妵鎰板炊椤掆偓閸愨偓闂佹悶鍎洪崜锕傚汲椤栫偞鍋犳繛鎴f珪鐎氾拷
|
||||
// ------------闂備浇宕垫慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞妞ゆ巻鍋撻柡瀣╃窔閺岋絽螖閳ь剟鎮ч崱娆戠焾闁跨噦鎷<EFBFBD>-----------------
|
||||
// 闂備浇宕垫慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞妞ゆ巻鍋撻柛鎰ㄥ亾闂備焦鎮堕崕娲礈閿曞倸姹叉い鏍仦閸嬬姵绻涢幋锝嗙彧閻庢熬鎷<EFBFBD>
|
||||
getline(csv_data, line);
|
||||
|
||||
std::istringstream sin;
|
||||
// 闂備礁婀辨灙妞わ附濞婇妴渚€骞嬮悩鍐茬彴闁荤姴娲﹁ぐ鍐緤閸ф鐓涘ù锝呮惈椤h偐鈧鎼幏锟<EFBFBD>
|
||||
// 闂傚倷绀佸﹢杈ㄧ仚濡炪倧闄勬繛濠囧Υ娓氣偓楠炲鎮╅崘鑼酱闂佽崵濮村ú锕併亹閸愵亜绶ら柛褎顨嗛悡娑樏归敐鍛儓妞わ綀鍋愰埀顒冾潐閹碱偊骞忛敓锟<EFBFBD>
|
||||
while (getline(csv_data, line)) {
|
||||
words.clear();
|
||||
sin.clear();
|
||||
@ -1089,7 +1089,7 @@ std::string GetFileContent(std::string filename, int line) {
|
||||
return strFileContent;
|
||||
}
|
||||
|
||||
// BOOST闂備胶鍎甸崑鎾诲礉瀹ュ鏁嗘繝濠傜墕缁€鍡樼箾閸℃ê绔鹃柍褜鍓欓崯顖氼焽韫囨稑绠氱憸蹇曟兜閳ь剚淇婇妶鍥㈤柣顓濈窔閹焦绻呴惇鏇㈡⒑闂堚晠妾繝銏∶…鍥礃椤旇壈袝闂佸壊鍋嗛崰鎾诲Υ閿燂拷
|
||||
// BOOST闂傚倷鑳堕崕鐢稿磻閹捐绀夌€广儱顦介弫鍡樼節婵犲倻澧曠紒鈧崱妯肩闁糕剝锚缁旈箖鏌嶈閸撴瑩宕姘肩劷闊洦绋戠粻姘辨喐韫囨洘鍏滈柍褜鍓氭穱濠囧Χ閸ヮ灝銏ゆ煟椤撴繄绐旈柟顖欑劍缁诲懘鎯囬弴銏♀拺闂傚牃鏅犲顔界節閵忊埗顏堚€﹂崶顒€绀冩い鏃囧琚濋梻浣稿閸嬪棝宕伴幘璇参ラ柨鐕傛嫹
|
||||
bool CheckIP(const char *ip) {
|
||||
boost::xpressive::cregex reg_ip =
|
||||
boost::xpressive::cregex::compile("(25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])[.](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])");
|
||||
@ -1099,20 +1099,20 @@ bool CheckIP(const char *ip) {
|
||||
bool IsValidMask(std::string mask) {
|
||||
int iRet = -1;
|
||||
|
||||
// 闂佽绻愮换鎰板箲閸戦亶姊洪棃鈺呮婵犮垺锚椤洭宕橀钘変缓闂佺懓鍚€鐠佹煡宕戦幘鏂ュ牚闁告侗鍘洪崠鏍⒑閸涘﹤绗掓俊顐n殔閻g兘宕熼浣锋唉濠电偞鍨堕敋闁绘挻鍨块弻宥夊Ψ閿斿墽鐣惧┑鐐存綑濡繈鐛幋锕€顫呴柍銉ョ-娴滐拷 闂備胶鍋ㄩ崕鑼垝閸垼濮抽柍鍝勫€规禍銈嗙箾閹寸伝顏堟偂閹达附鐓涘ù锝呮憸閹界娀鏌¢崱娆忔灈闁搞劑绠栭弫鎾绘晸閿燂拷
|
||||
// 闂備浇顕х换鎰崲閹版澘绠查柛鎴︿憾濮婃椽妫冮埡鍛€嶅┑鐘灪閿氭い顓炴喘瀹曟﹢顢欓挊澶夌紦闂備胶鎳撻崥鈧悹浣圭叀瀹曟垿骞橀弬銉ョ墯闂佸憡渚楅崢娲礌閺嶎厽鈷戦柛娑橈工缁楁帗淇婇锝庢當闁伙絿鍏樺畷鐔碱敆娴i攱鍞夋繝鐢靛仦閸ㄥ爼鏁嬮梺缁樻尰閸ㄥ潡寮诲澶娢ㄩ柨鏂垮⒔閻f儳鈹戦悙瀛樼稇婵☆偅绻堥悰顕€骞嬮敃鈧~鍛存煃閵夈儳锛嶅ù婊愭嫹 闂傚倷鑳堕崑銊╁磿閼碱剙鍨濋柛顐犲灱婵娊鏌嶉崫鍕偓瑙勭閵堝棛绠鹃柟瀵镐紳椤忓牊鍋傞柟杈鹃檮閻撴稑霉閿濆懏鎲搁柟鐣屽█閺岋繝宕卞▎蹇旂亪闂佹悶鍔戠粻鏍极閹剧粯鏅搁柨鐕傛嫹
|
||||
struct in_addr s;
|
||||
iRet = inet_pton(AF_INET, mask.c_str(), &s);
|
||||
|
||||
// 闂佸搫顦遍崕鎰板礈濮橆剛鏆﹂柡灞诲劚缁狅綁鏌熼柇锕€澧い顐ゅ█瀵爼鍩¢崒娑氬弳濠电偠顕滈幏锟<EFBFBD>1闂備焦瀵х粙鎴︽儗娓氣偓椤㈡岸鍩¢崨顓炲挤闁瑰吋鐣崹铏圭懅闂備礁鎼悧鍡浰囨导鏉戠柧闁靛鏅滈崕宥夋煕閹搭厽鐦介梻渚€娼婚梽鍕熆濡警鐒介柨鐕傛嫹
|
||||
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺嗭箓鏌$仦璇插姎缂佺媴缍侀弻鐔兼焽閿曗偓婢ь喗銇勯銈呪枅鐎殿喖鐖奸崺锟犲磼濞戞艾寮虫繝鐢靛仩椤曟粓骞忛敓锟<EFBFBD>1闂傚倷鐒︾€笛呯矙閹达附鍎楀〒姘e亾妞ゃ垺宀搁崺锟犲川椤撶偛鎸ら梺鐟板悑閻n亪宕归搹鍦噮闂傚倷绀侀幖顐︽偋閸℃蛋鍥ㄥ閺夋垹鏌ч梺闈涱槴閺呮粓宕曞澶嬬厱闁规惌鍘介惁浠嬫⒒娓氣偓濞煎姊介崟顐唵婵☆垯璀﹂悞浠嬫煥閻曞倹瀚<EFBFBD>
|
||||
if (iRet == 1) {
|
||||
// 濠电偛顕慨鏉懨规搴g濠㈣泛鐬肩壕鍏肩節婵犲倸鏆熼柟鐣屽枛閺屻倝宕崟顐熷亾閸ф违閹兼番鍨洪崕鐔肩叓閸ャ劎顣茬紒渚囧櫍閺岀喓鎷犻埄鍐獢闁荤姵鍔楅崰鎰矙婢跺瞼纾兼俊顖濆吹閻ㄥ鏌f惔銏⑩姇妞ゃ劌顦版穱濠囶敇閻旂繝绨婚梺鍛婄箓鐎氼喚鍠婇敓锟<EFBFBD>
|
||||
// 婵犵數鍋涢顓熸叏閺夋嚚瑙勵槹鎼达絿顦繝銏f硾閻偐澹曢崗鑲╃瘈濠电姴鍊搁弳鐔兼煙閻e苯鏋涢柡灞诲€濆畷顐﹀礋椤愮喎浜鹃柛褎顨呰繚闁瑰吋鐣崹娲磿閻旇偐鍙撻柛銉e妿椤h尙绱掓笟鍥ф珝闁哄瞼鍠撻幏鐘诲焺閸愵亞鐛㈤梺鑽ゅУ閸旀宕伴幇顔剧煓濠㈣泛鐬肩壕鍏间繆椤栨繂鍚归柣銊ヮ煼閺岋絾鎯旈姀鈶╁濡炪們鍔岄ˇ鐗堢┍婵犲浂鏁囬柣鏃傜節缁ㄥ姊洪崨濠勭畵閻庢凹鍠氶崰濠囨晸閿燂拷
|
||||
unsigned int addr = ntohl(s.s_addr);
|
||||
|
||||
// 闂佸搫顦遍崕鎰板礈濮橆剛鏆﹂柛娆忣槺閳绘棃寮堕悙鏉戭棆闁谎冪焸瀵爼鍩¢崒婧炬闂佺硶鏅滈〃鍫ュ焵椤掍胶鈯曟い銊ョ墦椤㈡牗鎷呴崷顓涙灃闂佽法鍣﹂幏锟<EFBFBD>
|
||||
// 闂備礁鎼ˇ閬嶅磿閹版澘绀堟慨姗嗗墰閺嗭箓鏌涘▎蹇fШ闁崇粯妫冨鍫曟倷閺夋埈妫嗛梺璋庡啰鐒哥€殿喖鐖奸崺锟犲磼濠х偓顫嶉梻浣虹《閺呮粓銆冮崼銉ョ劦妞ゆ帊鑳堕埊鏇熴亜閵娿儳澧︽い銏$墬閹峰懘宕烽娑欑亙闂備浇娉曢崳锕傚箯閿燂拷
|
||||
std::bitset<32> b((int)addr);
|
||||
std::string strMask = b.to_string();
|
||||
|
||||
// 闂備礁鎼悮顐﹀磿閸欏鐝舵俊顖濆吹椤╄尙鈧厜鍋撻柛鎰典簽椤旀帡姊洪崨濠傜婵炲鐩幃楦款槾缂侇噮鍙冮弫鍌炴嚄椤栵絾鑸瑰┑鐐村灦閹尖晠宕㈤幆褉鏋旈柨鐕傛嫹"01"闂備焦瀵х粙鎴︽嚐椤栫偑鈧懓顦圭€殿喚枪楗即鍩€椤掑倻绠斿璺哄閸嬫挸鈽夊▍顓т簻閿曘垽顢旈崼鐔告珫閻庡厜鍋撻柛鎰劤濞堫垶姊洪崫鍕仼閻庢稈鏅涘嵄闁归棿绀佺€氬顭跨捄渚剱婵炲懎绻橀弻锝夊Ω閵夈儺浠奸梺鐑╁墲閻熝呮閺冨牆绠i柣鎰蔼缁€瀣⒑濞茶娅欓柟鍑ゆ嫹
|
||||
// 闂傚倷绀侀幖顐ゆ偖椤愶箑纾块柛娆忣槺閻濊埖淇婇婵嗗惞妞も晞灏欓埀顒€鍘滈崑鎾绘煕閹板吀绨芥い鏃€甯″娲川婵犲倻顑勫┑鐐差槹閻╊垶骞冩ウ娆炬Ь缂備緡鍣崣鍐极閸岀偞鍤勬い鏍电稻閼哥懓鈹戦悙鏉戠仸闁瑰皷鏅犲畷銏ゅ箚瑜夐弸鏃堟煥閻曞倹瀚<EFBFBD>"01"闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍亼閳ь剙鎳撻ˇ鍦偓娈垮枤鏋顏冨嵆閸┾偓妞ゆ帒鍊荤粻鏂款熆鐠哄搫顦柛瀣尭閳藉鈻嶉褌绨婚柨鏇樺灲椤㈡棃宕奸悢鍛婄彨闁诲骸鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫灦濮婃椽宕崟顐患闁诲孩绋堥弲娑樺祫闂佸綊妫跨粈浣衡偓姘槸椤法鎹勬笟顖氬壉濠电偛鎳庣换姗€寮婚敐澶娢╅柕澶堝労娴犲ジ姊洪悜鈺佸⒉闁荤啙鍛潟闁哄啫鐗嗙粻锝夋煟閹邦垰钄肩紒鈧€n喗鈷戞繛鑼额嚙濞呮瑩鏌熼崙銈嗗
|
||||
return (strMask.find("01") == std::string::npos);
|
||||
}
|
||||
|
||||
@ -1241,24 +1241,24 @@ std::string GetSysStatus() {
|
||||
return strJson;
|
||||
}
|
||||
|
||||
// 闂佽绻愮换鎰涘Δ鈧悾鐑芥偄閸濄儮鏋栭梺璺ㄥ櫐閹凤拷16闂佸搫顦弲婊呯矙閹达箑鏄ユ俊銈呭暊閸嬫挸鈽夊▎妯荤暭濡炪倖鍨抽悞锕€顭囬鍫晢濞达絿枪缁ㄣ儲绻涢幋鐐村碍闁圭⒈鍋婇、姘额敊閼恒儱鍔呴梺鍝勫暙閸婂綊鎮鹃柆宥嗗€垫繛鎴炵懐濞堟瑥鈹戦埥鍡楀籍鐎规洘鍔欓弫鎾绘晸閿燂拷
|
||||
// 闂備浇顕х换鎰崲閹邦儵娑樜旈埀顒勬偩閻戣姤鍋勯柛婵勫劗閺嬫牠姊虹捄銊ユ珢闁瑰嚖鎷<EFBFBD>16闂備礁鎼ˇ顐﹀疾濠婂懐鐭欓柟杈剧畱閺勩儲淇婇妶鍛殜闁稿鎸搁埥澶娾枎濡崵鏆俊鐐€栭崹鎶芥倿閿曗偓椤洭顢旈崼顐f櫌婵炶揪绲挎灙缂併劊鍎茬换娑㈠箣閻愭潙纰嶉梺鍦拡閸嬪﹪銆佸棰濇晩闁兼亽鍎遍崝鍛存⒑閸濆嫬鏆欓柛濠傜秺閹箖鏌嗗鍡椻偓鍨箾閹寸偟鎳愭繛鍫熺懃閳规垿鍩ラ崱妤€绫嶉悗瑙勬礃閸旀瑩寮幘缁樻櫢闁跨噦鎷<EFBFBD>
|
||||
unsigned char hexCharToByte(char c) {
|
||||
if (c >= '0' && c <= '9') return c - '0';
|
||||
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
|
||||
if (c >= 'a' && c <= 'f') return c - 'a' + 10;
|
||||
return 0; // 闂佽娴烽弫濠氬焵椤掍胶銆掗柤褰掔畺閺岋繝宕橀鍕戯綁鏌¢崨顐㈠姦闁诡垰鍟村畷鐔碱敃閵堝棙鍠曠紓鍌欑劍椤ㄦ劗鎷嬮敐鍥潟婵犻潧娲︽禍銈夋煛閸屾稑顕滅紒鈧埀锟<EFBFBD>0
|
||||
return 0; // 闂備浇顕уù鐑藉极婵犳艾鐒垫い鎺嶈兌閵嗘帡鏌よぐ鎺旂暫闁哄矉绻濆畷姗€顢旈崟鎴秮閺岋繝宕ㄩ銏犲Е闂佽鍨伴崯鏉戠暦閻旂⒈鏁冮柕鍫濇閸犳洜绱撻崒娆戝妽妞ゃ劍鍔楅幏瀣晲閸ヮ煈娼熷┑鐘绘涧濞诧附绂嶉妶澶嬬厸闁稿本绋戦婊呯磼閳ь剟鍩€閿燂拷0
|
||||
}
|
||||
|
||||
// 闂佽绻愭蹇涘箯閿燂拷16闂佸搫顦弲婊呯矙閹达箑鏄ユ俊銈呭暊閸嬫挸鈽夊▎妯荤暭濡炪倖鍨抽悞锔剧矙婢舵劖鍤戦柤鍝ユ暩閵堫噣姊虹涵鍜佸殐婵犫懇鍋撻柣鐘冲姉閸犳捇鍩€椤掍胶鈯曟い銊ヮ槹娣囧﹪顢橀姀鐘崇€梺瑙勵問閸犳岸鎯岄敓锟<EFBFBD>
|
||||
// 闂備浇顕х换鎰殽韫囨稑绠柨鐕傛嫹16闂備礁鎼ˇ顐﹀疾濠婂懐鐭欓柟杈剧畱閺勩儲淇婇妶鍛殜闁稿鎸搁埥澶娾枎濡崵鏆俊鐐€栭崹鎶芥倿閿斿墽鐭欏鑸靛姈閸ゆ垿鏌ら崫銉︽毄闁靛牜鍣e铏规兜閸滀礁娈愬┑鐘噰閸嬫捇鏌i悩鍐插闁哥姵鎹囬崺鈧い鎺嶈兌閳洘銇勯妸銉Ч濞e洤锕、姗€濮€閻樺磭鈧剟姊虹憴鍕靛晱闁哥姵宀搁幆宀勬晸閿燂拷
|
||||
int hexStringToBytes(const char *hexStr, unsigned char *bytes, size_t bytesSize) {
|
||||
size_t hexLen = strlen(hexStr);
|
||||
if (hexLen % 2 != 0) {
|
||||
zlog_error(zct, "hexLen:%d is odd", hexLen);
|
||||
return -1; // Hex闂佽瀛╃粙鎺椼€冮崼銉晞濞达絽婀遍埢鏃堟煛鐏炶鍔滄慨锝嗗姍楠炴牗娼忛崜褏鏆犵紓浣靛姀鐏忔瑩骞忛悩璇参ㄩ柨鏂垮建閿曞倹鐓曢悗锝庡幖閻撴劙鏌¢崱顓熷
|
||||
return -1; // Hex闂備浇顕х€涒晝绮欓幒妞尖偓鍐醇閵夘喗鏅炴繛杈剧到濠€閬嶅煝閺冨牊鐓涢悘鐐额嚙閸旀粍鎱ㄩ敐鍡楀妤犵偞鐗楀蹇涘礈瑜忛弳鐘电磽娴i潧濮€閻忓繑鐟╅獮蹇涙偐鐠囧弬銊╂煥閺傚灝寤洪柨鏇炲€归悡鏇㈡倵閿濆骸骞栭柣鎾村姍閺岋繝宕遍鐔奉伓
|
||||
}
|
||||
if (bytesSize < hexLen / 2) {
|
||||
zlog_error(zct, "bytesSize:%d < hexLen:%d", bytesSize, hexLen);
|
||||
return -1; // 闂佽瀛╃粙鎺椼€冩径瀣╃箚妞ゆ挶鍨归弸渚€鏌熷▓鍨灓闁活厼顑夐弻锝夊Ω閵夈儺浠奸梺闈涙搐濞层劍绂嶅宀€鐤€閹艰揪绲块幉褰掓煟閳╁啫绗掗柛妯荤墬缁傚秹骞掗弬鍝勪壕闁荤喓澧楃拹锟犳煙閹冩倯婵炵⒈浜、妤佹媴缁嬭法鍝庨梻浣告啞閼规儳霉瀹勬壋鏋旈柟瀵稿Л閸嬫挸鈽夊▎妯荤暯婵犵妲勯幏锟<EFBFBD>
|
||||
return -1; // 闂備浇顕х€涒晝绮欓幒妞尖偓鍐╁緞鐎b晝绠氬銈嗘尪閸ㄥ綊寮告笟鈧弻鐔封枔閸喗鐏撻梺娲诲幖椤戝寮婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥咁潰瀹€鈧悿鈧柟鑹版彧缁插潡骞夎ぐ鎺撶厽闁斥晛鍟粭鎺楁煕濡崵澧紒鍌氱Ч楠炴帡寮崫鍕闂佽崵鍠撴晶妤冩嫻閿熺姵鐓欓柟顖嗗啯鍊┑鐐碘拡娴滎亪銆佸Δ浣瑰缂佸娉曢崫搴ㄦ⒒娴e憡鍟為柤瑙勫劤闇夌€瑰嫭澹嬮弸鏃堟煙鐎电ǹ袥闁稿鎸搁埥澶娾枎濡崵鏆┑鐘殿暯濡插嫰骞忛敓锟<EFBFBD>
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < hexLen; i += 2) {
|
||||
@ -1267,7 +1267,7 @@ int hexStringToBytes(const char *hexStr, unsigned char *bytes, size_t bytesSize)
|
||||
bytes[i / 2] = (highNibble << 4) | lowNibble;
|
||||
}
|
||||
|
||||
return 0; // 闂備胶鎳撻悺銊╁礉閺囩喐鍙忛柨鐕傛嫹
|
||||
return 0; // 闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繘鏌ㄩ悤鍌涘
|
||||
}
|
||||
|
||||
void stringToHex(const char *str, char *hexStr) {
|
||||
@ -1284,13 +1284,13 @@ void hexToAscii(const char *hexStr, char *asciiStr) {
|
||||
int i, j = 0;
|
||||
|
||||
for (i = 0; i < len; i += 2) {
|
||||
// 闂佽崵濮村ú鈺咁敋瑜戦妵鎰板炊閵娧€鏋栭梺闈涚墕鐎氫即宕电€n喗鍊垫繛鎴炵懐濞堟ɑ銇勯幋婊呯獢闁绘侗鍠氶幑鍕惞鐟欏嫷鍟堥梻浣呵圭换鎴﹀磿閻撳篃褰掑幢濞戞顔夊銈庡亽閸欌偓缂佲偓鐎n喗鐓涘ù锝呮憸閹界娀鏌¢崱顓熷
|
||||
// 闂備浇宕垫慨鏉懨洪埡鍜佹晪鐟滄垿濡甸幇鏉跨倞闁靛ě鈧弸鏍⒑闂堟稓澧曢悗姘嵆瀹曠數鈧綆鍠楅崐鍨箾閹寸偟鎳愭繛鍫熒戦妵鍕箣濠婂懐鐛㈤梺缁樹緱閸犳岸骞戦崟顖涙優閻熸瑥瀚烽崯鍫ユ⒒娴e懙鍦崲閹达箑纾块柣鎾崇瘍瑜版帒骞㈡繛鎴烆焽椤斿顪冮妶搴′航闁告瑢鍋撶紓浣插亾閻庯綆鍠楅悡娑樏归敐鍛喐闁圭晫濞€閺岋繝宕遍鐔奉伓
|
||||
int byte;
|
||||
sscanf(&hexStr[i], "%2x", &byte);
|
||||
// 闂佽绻愮换鎰涘▎鎾虫辈闁挎繂顦弸渚€鏌熷畡鐗堟拱缂佷緡鍣i弻鐔烘嫚閳╁啰绐旈柣鐘冲姉閸犳捇鍩€椤掑倹鏆╅柟铏尵閼洪亶寮婚妷锕€鍓梺鍛婂灦閳瑰钉II闂佽瀛╃粙鎺椼€冮崼銉晞闁跨噦鎷<EFBFBD>
|
||||
// 闂備浇顕х换鎰崲閹邦儵娑樷枎閹捐櫕杈堥梺鎸庣箓椤︻垶寮告笟鈧弻鐔风暋閻楀牊鎷辩紓浣风贰閸o綁寮婚悢鐑樺珰闁斥晛鍟扮粣鏃堟煟閻樺啿濮夐柛鐘虫崌閸┾偓妞ゆ帒鍊归弳鈺呮煙閾忣偅灏甸柤娲憾瀵濡烽敃鈧崜顓㈡⒑閸涘﹤鐏﹂柍鐟伴拤II闂備浇顕х€涒晝绮欓幒妞尖偓鍐醇閵夘喗鏅為梺璺ㄥ櫐閹凤拷
|
||||
asciiStr[j++] = (char)byte;
|
||||
}
|
||||
// 婵犵數鍎戠紞鈧い鏇嗗嫭鍙忛柣鎰暯閸嬫挸鈽夊▎妯荤暭濡炪倖鍨抽悞锔剧矙婢舵劖鍤戞い鎺戝€圭亸婵嬫⒑閸濆嫷妲洪柛鐘虫崌椤㈡牠鏁撻敓锟<EFBFBD>
|
||||
// 濠电姷鏁搁崕鎴犵礊閳ь剚銇勯弴鍡楀閸欏繘鏌i幇顕呮毌闁稿鎸搁埥澶娾枎濡崵鏆俊鐐€栭崹鎶芥倿閿斿墽鐭欏鑸靛姈閸ゆ垶銇勯幒鎴濃偓鍦焊濠靛鈷戦柛婵嗗濡叉椽鏌涢悩铏磳妞ゃ垺鐗犻弫鎾绘晸閿燂拷
|
||||
asciiStr[j] = '\0';
|
||||
}
|
||||
|
||||
@ -1328,7 +1328,7 @@ void swap(char *data) {
|
||||
int OpenWatchDog() {
|
||||
int fd = -1;
|
||||
InitGpio(GlobalConfig::GPIO_G.hardWatchDog, 1);
|
||||
gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //濠德板€曢崐褰掆€﹂崶顒€鏋侀柟闂磋兌瀹撲線鏌ц箛锝呬簼缂佺姵甯¢弻鈩冪瑹婵犲啫顏<EFBFBD>
|
||||
gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); //婵犲痉鏉库偓鏇㈠磹瑜版巻鈧箓宕堕鈧弸渚€鏌熼梻纾嬪厡鐎规挷绶氶弻褑绠涢敐鍛凹缂備胶濮电敮锟犲蓟閳╁啰鐟瑰┑鐘插暙椤忥拷
|
||||
if (0 > (fd = open("/dev/watchdog", O_WRONLY))) {
|
||||
zlog_error(zbt, "fail to open /dev/watchdog");
|
||||
}
|
||||
@ -1389,7 +1389,7 @@ std::string GetOneContent(const char *szData, int nRow, const char *szSeparate)
|
||||
int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) {
|
||||
zlog_info(zbt, "[set_opt] speed:%d, bits:%d, event:%c, stop:%d", nSpeed, nBits, nEvent, nStop);
|
||||
struct termios newtio, oldtio;
|
||||
if (tcgetattr(fd, &oldtio) != 0) { //婵犵妲呴崑鈧柛瀣尰缁绘盯寮堕幋顓炲壆闁荤喐娲栧Λ婵嗙暦閿濆鏅查柛鈩冾焺閿曞倹鐓曟慨妯哄⒔閻h京鎲搁悧鍫㈠弨闁诡喕绮欓弫鎾绘晸閿燂拷
|
||||
if (tcgetattr(fd, &oldtio) != 0) { //濠电姷顣藉Σ鍛村磻閳ь剟鏌涚€n偅灏扮紒缁樼洴瀵爼骞嬮鐐插闂佽崵鍠愬ú鏍涘┑鍡欐殾闁挎繂顦伴弲鏌ユ煕閳╁喚鐒洪柨鏇炲€归悡鏇熸叏濡搫鈷旈柣锝堜含閹叉悂鎮ч崼銏犲绩闂佽鍠曠划娆撳极閹剧粯鏅搁柨鐕傛嫹
|
||||
zlog_error(zbt, "tcgetattr fail");
|
||||
return -1;
|
||||
}
|
||||
@ -1422,7 +1422,7 @@ int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) {
|
||||
break;
|
||||
}
|
||||
|
||||
switch (nSpeed) //闂佽崵濮崇粈浣规櫠娴犲鍋柛鈩冦仜閺嬫牠鏌曡箛瀣仼妞ゃ儲顨婇弻锝呪堪閹邦厼顏<EFBFBD>
|
||||
switch (nSpeed) //闂備浇宕垫慨宕囩矆娴h娅犲ù鐘差儐閸嬵亪鏌涢埄鍐︿粶闁哄鐗犻弻鏇$疀鐎n亞浠煎銈冨劜椤ㄥ﹪寮婚敐鍛牚闁归偊鍘奸锟<EFBFBD>
|
||||
{
|
||||
case 2400:
|
||||
cfsetispeed(&newtio, B2400);
|
||||
@ -1450,7 +1450,7 @@ int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) {
|
||||
zlog_error(zbt, "invalid speed:%d, use B9600", nSpeed);
|
||||
break;
|
||||
}
|
||||
if (nStop == 1) //闂佽崵濮崇粈浣规櫠娴犲鍋柛鈩冪☉绾剧粯绻濇繝鍌氼伌闁告挻鍎抽湁闁挎繂绻戠€氾拷
|
||||
if (nStop == 1) //闂備浇宕垫慨宕囩矆娴h娅犲ù鐘差儐閸嬵亪鏌涢埄鍐槈缁惧墽绮换婵囩節閸屾凹浼岄梺鍛婃尰閸庢娊婀侀梺鎸庣箓缁绘垹鈧熬鎷<EFBFBD>
|
||||
newtio.c_cflag &= ~CSTOPB;
|
||||
else if (nStop == 2)
|
||||
newtio.c_cflag |= CSTOPB;
|
||||
@ -1485,7 +1485,7 @@ int getcsq() {
|
||||
}
|
||||
sleep(1);
|
||||
unsigned char rbuf[128] = {0x00};
|
||||
int len = read(fd, rbuf, sizeof(rbuf)); // 闂備線娼荤拹鐔煎礉鐎n剚鍟洪柛鈩冪☉閻鏌ㄥ┑鍡欏⒈闁搞們鍨介弻娑滅疀鐎n亜濮庨梺鐑╁閸涱垳鐣堕梺鎸庢閸庡銆呴敓锟<EFBFBD>
|
||||
int len = read(fd, rbuf, sizeof(rbuf)); // 闂傚倷绶氬鑽ゆ嫻閻旂厧绀夐悗锝庡墯閸熸椽鏌涢埄鍐槈闁活厽顨婇弻銊モ攽閸℃瑥鈷堥梺鎼炲€戦崹浠嬪蓟濞戞粎鐤€閻庯綆浜滄慨搴ㄦ⒑閻戔晛顫掗柛娑卞灣閻e爼姊洪幐搴㈩梿闁稿骸顭烽妴鍛存晸閿燂拷
|
||||
close(fd);
|
||||
zlog_info(zct, "rbuf = %s,len = %d", rbuf, len);
|
||||
sleep(1);
|
||||
@ -1670,15 +1670,15 @@ int writeIntValue(const char *section, const char *key, int val, const char *fil
|
||||
|
||||
int getDiskInfo(char *diskTotal, char *diskFree) {
|
||||
DISK diskInfo;
|
||||
/* 1.闂備礁鍚嬮崕鎶藉床閼艰翰浜归柨鐕傛嫹/home/濠电偞鍨堕幐鎼侇敄婢跺⿴鐒藉ù鐓庣摠閸庡秹鏌涢弴銊ュ幋闁稿鎸鹃幏鐘差啅椤斿吋娅嶉梻鍌欐祰椤曟粓骞忛敓锟<E69593> */
|
||||
/* 1.闂傚倷绀侀崥瀣磿閹惰棄搴婇柤鑹扮堪娴滃綊鏌ㄩ悤鍌涘/home/婵犵數鍋為崹鍫曞箰閹间緡鏁勫璺衡看閻掕棄霉閻撳海鎽犻柛搴$Ч閺屾盯寮撮妸銉ュ箣闂佺ǹ顑嗛幐楣冨箯閻樺樊鍟呮い鏂垮悑濞呭秹姊婚崒娆愮グ妞ゆ洘绮撻獮蹇涙晸閿燂拷 */
|
||||
statfs("/", &diskInfo);
|
||||
unsigned long long blocksize = diskInfo.f_bsize;
|
||||
unsigned long long totalsize = blocksize * diskInfo.f_blocks;
|
||||
|
||||
|
||||
/* 2.闂備礁鍚嬮崕鎶藉床閼艰翰浜归柛銉e妿閳绘棃鏌嶈閸撴氨绮欐径灞稿亾閿濆簼绨婚柍閿嬬墪闇夐柨婵嗘閹冲懘鏌嶇憴鍕⒌婵﹤顭峰鍫曞箣閻愬樊浼呴梻浣告啞閻燁垶宕归幎钘夋瀬闁靛牆娲ㄩ惌姘箾瀹割喕绨奸柨娑氬枛閺岋綁濡搁妷銉患闂侀潧娲ゅú銊︾閹间焦鏅搁柨鐕傛嫹 */
|
||||
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂備礁鎲¢幐鎾疾濞嗘垹绀婇柟瀵稿Х閻碍绻涘顔荤凹闁挎稓鍠栭弻锝夊Ω閵夈儺浠奸梺闈涙搐濞层劍绂嶉幖浣规櫢闁跨噦鎷<EFBFBD>
|
||||
// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂備礁鎲¢悷顖炲垂閹惰棄鏋侀柕鍫濇川閻碍绻涘顔荤凹闁挎稓鍠庨…鍧楀醇閸℃鏆熸慨锝忔嫹
|
||||
/* 2.闂傚倷绀侀崥瀣磿閹惰棄搴婇柤鑹扮堪娴滃綊鏌涢妷锝呭闁崇粯妫冮弻宥堫檨闁告挻姘ㄧ划娆愬緞鐏炵ǹ浜鹃柨婵嗙凹缁ㄥ鏌嶉柨瀣ⅹ闂囧鏌ㄥ┑鍡橆棤闁瑰啿鎳橀弻宥囨喆閸曨厼鈷屽┑顔硷工椤嘲顕i崼鏇炵闁绘劕妯婃导鍛存⒒娴e憡鍟為柣鐕佸灦瀹曞綊骞庨挊澶嬬€梺闈涚墕濞层劑鎯屽顓犵鐎瑰壊鍠曠花濂告煥濞戞艾鏋涢柡宀嬬秮婵℃悂濡烽妷顔绘偅闂備線娼уú銈吤洪妸锔绢洸闁归棿鐒﹂弲鎼佹煥閻曞倹瀚<EFBFBD> */
|
||||
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //闂傚倷绀侀幉锟犲箰閹绢喖鐤炬繛鍡樺灩缁€濠囨煙鐎电ǹ啸闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠寮婚敐澶娢╅柕澶堝労娴犲ジ姊洪棃娑欐悙婵炲眰鍔嶇粋宥夊箹娴h娅㈤梺璺ㄥ櫐閹凤拷
|
||||
// unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //闂傚倷绀侀幉锟犳偡椤栫偛鍨傞柟鎯版閺嬩線鏌曢崼婵囧窛闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犲酣鈥﹂崸妤€閱囬柛鈩冾殔閺嗙喐鎱ㄩ敐蹇斿
|
||||
|
||||
sprintf(diskTotal, "%llu", totalsize >> 20);
|
||||
sprintf(diskFree, "%llu", freeDisk >> 20);
|
||||
@ -1706,28 +1706,28 @@ unsigned short cal_chksum(unsigned short *addr, int len) {
|
||||
|
||||
int socketHeart(const char *pSendData) {
|
||||
zlog_info(zct, "socketHeart");
|
||||
int sockfd; // Socket闂備礁鎼崐绋棵洪敐鍛瀻闁靛繈鍊曠粻鐢哥叓閸ャ劏澹橀柣妤佹皑缁辨帒螖鐎n偄顏<EFBFBD>
|
||||
struct sockaddr_in serverAddr {}; // Server闂備線娼婚梽鍕熆濡警鐒介柛鎰典簽绾惧ジ鏌熼幆褜鍤熼柍褜鍓﹂崹閬嶅箯閸涘瓨鏅搁柨鐕傛嫹
|
||||
int sockfd; // Socket闂傚倷绀侀幖顐﹀磹缁嬫5娲晲閸涱亝鐎婚梺闈涚箞閸婃洜绮婚悽鍝ュ彄闁搞儯鍔忔竟姗€鏌eΔ浣圭殤缂佽鲸甯掕灃閻庯綆鍋勯锟<EFBFBD>
|
||||
struct sockaddr_in serverAddr {}; // Server闂傚倷绶氬濠氭⒔閸曨偒鐔嗘俊顖欒閻掍粙鏌涢幇鍏哥敖缁炬儳銈搁弻鐔煎箚瑜滈崵鐔兼煃瑜滈崜锕傚垂闁秴绠柛娑樼摠閺呮悂鏌ㄩ悤鍌涘
|
||||
|
||||
// 闂備礁鎲$敮妤冪矙閹寸姷纾介柟缁樼睄cket
|
||||
// 闂傚倷绀侀幉锛勬暜濡ゅ啰鐭欓柟瀵稿Х绾句粙鏌熺紒妯肩潉cket
|
||||
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
|
||||
zlog_error(zct, "Failed to create socket.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 闂佽崵濮崇粈浣规櫠娴犲鍋柛婵堝瀬rver闂備線娼婚梽鍕熆濡警鐒介柛鎰ㄦ櫇閳瑰秹鏌嶉埡浣告殨缂佹唻鎷<EFBFBD>
|
||||
// 闂備浇宕垫慨宕囩矆娴h娅犲ù鐘差儐閸嬵亪鏌涘┑鍫濈€瑀ver闂傚倷绶氬濠氭⒔閸曨偒鐔嗘俊顖欒閻掍粙鏌涢幇銊︽珖闁崇懓绉归弻宥夊煛娴e憡娈ㄧ紓浣瑰敾閹凤拷
|
||||
serverAddr.sin_family = AF_INET;
|
||||
serverAddr.sin_port = htons(18393); // TCP濠殿喗甯楃粙鎺撶仚濡炪倖鎹佸畷鐢靛垝閳哄拋鏁嶆慨姗嗗墰缁嬪姊洪崨濠勬噯婵炴挸婀遍幏褰掓晸閿燂拷80
|
||||
serverAddr.sin_port = htons(18393); // TCP婵犳鍠楃敮妤冪矙閹烘挾浠氭俊鐐€栭幑浣哥暦閻㈤潧鍨濋柍鍝勬媼閺佸秵鎱ㄥ鍡楀缂佸顦靛娲川婵犲嫭鍣┑鐐存尭濠€閬嶅箯瑜版帗鏅搁柨鐕傛嫹80
|
||||
inet_pton(AF_INET, "192.168.1.147", &serverAddr.sin_addr);
|
||||
|
||||
// 闂佸搫顦弲婵嬪磻閻愬灚鏆滈柟缁㈠枛缁€鍡涙煟瑜庣槐纾杤er
|
||||
// 闂備礁鎼ˇ顐﹀疾濠靛纾婚柣鎰仛閺嗘粓鏌熺紒銏犳灈缂佲偓閸℃稒鐓熺憸搴f绾炬潳er
|
||||
if (connect(sockfd, reinterpret_cast<struct sockaddr *>(&serverAddr), sizeof(serverAddr)) == -1) {
|
||||
zlog_error(zct, "Failed to connect to the server.");
|
||||
close(sockfd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 闂備礁鎲¢悷锕傚垂閸ф鐒垫い鎴f硶椤︼妇绱掗崫鍕挃闁圭懓瀚伴幖褰掝敃閿濆棭鍟€闂備胶顢婇鏍窗閺嶎偀鍋撶喊澶嬪
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倸鍨傞柛褎顨呴悞鍨亜閹达絾纭舵い锔煎缁辨帡宕崟顐熸寖闂佸湱鎳撶€氫即骞栬ぐ鎺濇晝闁挎繂妫崯鈧梻鍌欒兌椤㈠﹪顢氶弽顓炵獥闁哄稁鍋€閸嬫挾鍠婃径瀣伓
|
||||
|
||||
ssize_t bytesSent = send(sockfd, pSendData, strlen(pSendData), MSG_NOSIGNAL);
|
||||
if (bytesSent == -1) {
|
||||
@ -1740,13 +1740,13 @@ int socketHeart(const char *pSendData) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 闂備胶枪缁绘垶绻涙繝鍋芥稓鍠婇埡鐜瀔et闂佸搫顦弲婵嬪磻閻愬灚鏆滈柨鐕傛嫹
|
||||
// 闂傚倷鑳舵灙缂佺粯鍨剁换娑欑節閸嬭姤绋撻崰濠囧煛閻滅€攅t闂備礁鎼ˇ顐﹀疾濠靛纾婚柣鎰仛閺嗘粓鏌ㄩ悤鍌涘
|
||||
close(sockfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Ping闂備礁鎲¢崹鍏兼叏閵堝姹查柣鏂垮悑閺咁剟鎮楅崷顓炰氦meout濠电偞鍨堕幑鍥╃磽濮樿京鐭撻柟缁㈠枛缁秹鏌ょ粙璺ㄤ粵妞は佸洦鈷掗柛灞剧箖瑜把呯磼鏉堛劎绠炵€规洩绻濆鏉戭潩鏉堚敩銏ゆ⒑閸濆嫬顏俊顐ゎ攳,10000 婵犳鍣紞鍡涘磻閸℃冻缍栭柨鐕傛嫹=10 缂傚倷绀侀¨鈧柟鍑ゆ嫹
|
||||
//闂備胶鎳撻悺銊╁礉閺囩喐鍙忔繛鎴欏灪閺咁剚鎱ㄥΟ铏癸紞缂佺姵鐓¢弻娑㈠Ψ椤栨稑顏<EFBFBD>0闂備焦瀵х粙鎴︽嚐椤栫偛桅闁瑰濮电€氬鏌曟径妯虹仯缂佹劖顨婂鍫曞煛閸屾稓鍙嗗┑鐐额嚋閹凤拷1闂備胶顢婇幓顏堝箯閿燂拷-1
|
||||
// Ping闂傚倷绀侀幉锟犲垂閸忓吋鍙忛柕鍫濐槸濮规煡鏌i弬鍨倯闁哄拋鍓熼幃妤呭捶椤撶偘姘eout婵犵數鍋為崹鍫曞箲閸モ晝纾芥慨妯夸含閻捇鏌熺紒銏犳灈缂侇偄绉归弻銈囩矙鐠恒劋绮靛銇礁娲﹂埛鎺楁煕鐏炲墽绠栫憸鎶婂懐纾奸弶鍫涘妿缁犵偟鈧娲╃换婵嗩嚕閺夋埈娼╅弶鍫氭暕閵忋倖鈷戦柛婵嗗椤忣偅淇婇銈庢敵,10000 濠电姵顔栭崳顖滅礊閸℃稑纾婚柛鈩冨喕缂嶆牠鏌ㄩ悤鍌涘=10 缂傚倸鍊风粈渚€篓閳ь剟鏌熼崙銈嗗
|
||||
//闂傚倷鑳堕幊鎾绘偤閵娾晛绀夐柡鍥╁枑閸欏繑绻涢幋娆忕仾闁哄拋鍓氶幈銊ノ熼搹鐧哥礊缂備胶濮甸悡锟犲蓟濞戙垹唯妞ゆ牗绋戦锟<EFBFBD>0闂傚倷鐒︾€笛呯矙閹达附鍤愭い鏍仜妗呴梺鐟邦嚟婵數鈧艾顭烽弻鏇熷緞濡櫣浠紓浣瑰姈椤ㄥ﹤顕i崼鏇炵厸闁稿本绋撻崣鍡椻攽閻愰鍤嬮柟鍑ゆ嫹1闂傚倷鑳堕、濠囧箵椤忓牆绠柨鐕傛嫹-1
|
||||
int Ping(const char *ips, int timeout) {
|
||||
struct timeval *tval;
|
||||
int maxfds = 0;
|
||||
@ -1755,13 +1755,13 @@ int Ping(const char *ips, int timeout) {
|
||||
int iRet = 0;
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_in from;
|
||||
// 闂佽崵濮抽悞锕傚磿閹惰姤鍋╃紓宥庢櫦濠电儑绲藉ú鐘诲礈濠靛洤顕遍柨鐕傛嫹
|
||||
// 闂備浇宕垫慨鎶芥倿閿曞倸纾块柟鎯板Г閸嬧晝绱撳搴㈡婵犵數鍎戠徊钘壝洪悩璇茬婵犻潧娲ら閬嶆煥閻曞倹瀚<EFBFBD>
|
||||
bzero(&addr, sizeof(addr));
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = inet_addr(ips);
|
||||
|
||||
int sockfd;
|
||||
// 闂備礁鎲¢悷锕傛偋閺囩姵顐介柣顏呂朿ket 闂備線娼уΛ鎾箯閿燂拷 濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞婵炵偓鐓㈤梺鐐藉劚閸熷潡锝為·绠刣o 闂佸搫顦弲婊堟偡閳哄懎闂梺鍨儏椤曡鲸鎱ㄥ鍡楀箹鐞氭岸姊绘担绋跨殹闁瑰嚖鎷<EFBFBD>
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋嬮柡鍥╁У椤愪粙鏌i鍛傛溈ket 闂傚倷绶氬褍螞閹绢喖绠柨鐕傛嫹 婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞濠电偟鍋撻悡銏ゆ⒑閻愯棄鍔氶柛鐔锋健閿濈偤路缁犲垼o 闂備礁鎼ˇ顐﹀疾濠婂牊鍋¢柍鍝勬噹闂傤垶姊洪崹顕呭剰妞ゆ洝椴搁幈銊ヮ潨閸℃绠归悶姘哺濮婄粯鎷呯粙璺ㄦ闂佺懓鍤栭幏锟<EFBFBD>
|
||||
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
||||
if (sockfd < 0) {
|
||||
zlog_error(zct, "ip:%s,socket error", ips);
|
||||
@ -1769,7 +1769,7 @@ int Ping(const char *ips, int timeout) {
|
||||
}
|
||||
|
||||
struct timeval timeo;
|
||||
// 闂佽崵濮抽悞锕傚磿閹惰姤鍋╃紓宥囨¥meOut闂備礁鎼崯顐︽偉閻撳宫娑㈡晸閿燂拷
|
||||
// 闂備浇宕垫慨鎶芥倿閿曞倸纾块柟鎯板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖顐﹀疮椤愶附鍋夐柣鎾冲濞戙垺鏅搁柨鐕傛嫹
|
||||
timeo.tv_sec = timeout / 1000;
|
||||
timeo.tv_usec = timeout % 1000;
|
||||
|
||||
@ -1781,25 +1781,25 @@ int Ping(const char *ips, int timeout) {
|
||||
|
||||
char sendpacket[2048];
|
||||
char recvpacket[2048];
|
||||
// 闂佽崵濮抽悞锕傚磿閹惰姤鍋╃紓宥囧皫ng闂備礁鎲¢悧顓㈠箯閿燂拷
|
||||
// 闂備浇宕垫慨鎶芥倿閿曞倸纾块柟鎯板Г閸嬧晝绱撳鍥х毇ng闂傚倷绀侀幉锟犳偋椤撱垹绠柨鐕傛嫹
|
||||
memset(sendpacket, 0, sizeof(sendpacket));
|
||||
|
||||
pid_t pid;
|
||||
// 闂備礁鎲¢悷锕傛偋閺囩姵顐介柣鈺婃7D闂備焦瀵х粙鎴炵附閺冨倻绀婇柡鍐e亾缂佸顦卞褍銆掓刊妾婇梻浣圭湽閸斿矂宕甸悮鐖島ence ID
|
||||
// 闂傚倷绀侀幉锟犳偡閿曞倹鍋嬮柡鍥╁У椤愪粙鏌i埡濠冿紬D闂傚倷鐒︾€笛呯矙閹寸偟闄勯柡鍐ㄥ€荤粈濠囨煛閸愶絽浜剧紓浣割儏椤﹀崬顕h閵嗘帗鍒婂濠囨⒒娴e湱婀介柛鏂跨焸瀹曠敻鎮悥宄秂nce ID
|
||||
pid = getpid();
|
||||
|
||||
struct ip *iph;
|
||||
struct icmp *icmp;
|
||||
|
||||
icmp = (struct icmp *)sendpacket;
|
||||
icmp->icmp_type = ICMP_ECHO; //闂備焦鎮堕崕鎶藉磻閻愬弬鐔稿緞鐏炴儳鐝伴梻浣哥仢椤戝洤锕㈤敓锟<EFBFBD>
|
||||
icmp->icmp_type = ICMP_ECHO; //闂傚倷鐒﹂幃鍫曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悘鐐村劤閻濅即姊绘担鍝ヤ虎妞ゆ垵娲ら敃銏ゆ晸閿燂拷
|
||||
icmp->icmp_code = 0;
|
||||
icmp->icmp_cksum = 0;
|
||||
icmp->icmp_seq = 0;
|
||||
icmp->icmp_id = pid;
|
||||
tval = (struct timeval *)icmp->icmp_data;
|
||||
gettimeofday(tval, NULL);
|
||||
icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp)); //闂備礁鎼粙鍕崲濠靛鍋橀柨鐕傛嫹
|
||||
icmp->icmp_cksum = cal_chksum((unsigned short *)icmp, sizeof(struct icmp)); //闂傚倷绀侀幖顐ょ矙閸曨厽宕叉繝闈涱儐閸嬫﹢鏌ㄩ悤鍌涘
|
||||
|
||||
int n = sendto(sockfd, (char *)&sendpacket, sizeof(struct icmp), 0, (struct sockaddr *)&addr, sizeof(addr));
|
||||
if (n < 1) {
|
||||
@ -1808,11 +1808,11 @@ int Ping(const char *ips, int timeout) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 闂備浇顫夋禍浠嬪磿鏉堫偁浜归柨鐕傛嫹
|
||||
// 闂備焦鐪归崹纭呫亹婢跺矁濮虫い鎺戝閻銇勯弽銊х畵闁告ɑ鎸抽弻鐔煎箒閹烘垵濮庨悷婊勬緲閻楁挸鐣峰璺虹骇闁割煈鍠栫欢顓熺箾鐎电ǹ校婵犫偓椤e級g闂備焦鐪归崝宀€鈧凹鍓涢懞閬嶆嚑椤掑倿鈹忛梺鍝勫暊閸嬫挾绱掓径灞藉幋妤犵偘绶氶、娑㈠Χ閸モ晩妲烽梻浣告贡椤d粙宕戦幘瓒佸綊鎮╅鐓庡Г缂備胶绮悧鐘诲蓟鐏炵晫鏆嗛柛鎰亾閻姊洪悜鈺佷壕闁告柨鐭傞獮鍡樼節閸ャ劌浠㈤梺璺ㄥ櫐閹凤拷
|
||||
// 闂傚倷娴囬~澶嬬娴犲纾块弶鍫亖娴滃綊鏌ㄩ悤鍌涘
|
||||
// 闂傚倷鐒﹂惇褰掑垂绾懌浜瑰璺虹焷婵櫕銇勯幒鎴濐仼闁活厽顨嗛妵鍕冀閵娧呯暤闂佸憡蓱閹告娊寮婚悢鐓庣畳闁圭儤鍨垫慨搴ㄦ偡濠婂嫭绶查柣妤佹尭閻e嘲顫濈捄铏归獓闂佸壊鐓堥崰鏍椤撶喓绠鹃悗鐢登规牎濠电姭鍋撴い锝呯礆g闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸嚬閸撴盯鎳為柆宥嗗殤妞ゆ帒鍊块埞蹇涙⒑閸濆嫬鏆婇柛瀣尵缁辨帗寰勭仦钘夊箣濡ょ姷鍋樼欢姘躲€佸☉銏犖ч柛銉㈡櫓濡茬兘姊绘担鍛婅础妞わ絼绮欏畷鎴﹀箻鐡掍礁缍婇幃鈺咁敊閻撳骸袚缂傚倷鑳剁划顖炴偋閻樿钃熼悘鐐垫櫕閺嗗棝鏌涢幇顔间壕闁活厽顨婂娲倻閳轰椒澹曢梺鍛婃煥閻倿鐛崱妯肩瘈闁搞儯鍔屾禒銏ゆ⒑鐠恒劌娅愰柟鍑ゆ嫹
|
||||
int cnt = 0;
|
||||
while (1) {
|
||||
// 闂佽崵濮抽悞锕傚磿閹惰姤鍋╃紓宥囨¥meOut闂備礁鎼崯顐︽偉閻撳宫娑㈠锤濡や焦娅栭悗鍏夊亾闁告劦浜為鎰攽閻愬弶顥戦柛鎾寸箖閺呭爼鎮╃拠鎻掑挤濡炪倖鐗楃划宥夊春閸屾稒鍙忔繝鍨尵缁夘剟鏌熼惂鍝ョɑ闁瑰嘲鎳庨オ浼村川椤旇姤顓归梻浣规た閻撳骞忛敓锟<EFBFBD>
|
||||
// 闂備浇宕垫慨鎶芥倿閿曞倸纾块柟鎯板Г閸嬧晝绱撳鍥骏meOut闂傚倷绀侀幖顐﹀疮椤愶附鍋夐柣鎾冲濞戙垹閿ゆ俊銈勭劍濞呮牠鎮楅崗澶婁壕闂佸憡鍔︽禍鐐侯敊閹邦兘鏀介柣鎰级椤ユ垿鏌涢幘瀵哥畺闁哄懎鐖奸幃鈺冩嫚閹绘帒鎸ゆ俊鐐€栭悧妤冨垝瀹ュ鏄ラ柛灞剧⊕閸欏繑绻濋崹顐e暗缂佸鍓熼弻鐔兼儌閸濄儳蓱闂佺懓鍢查幊搴ㄣ偑娴兼潙宸濇い鏃囧Г椤撳綊姊绘担瑙勩仧闁绘挸顦甸獮蹇涙晸閿燂拷
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(sockfd, &readfds);
|
||||
maxfds = sockfd + 1;
|
||||
@ -1824,7 +1824,7 @@ int Ping(const char *ips, int timeout) {
|
||||
break;
|
||||
}
|
||||
|
||||
// 闂備浇顫夋禍浠嬪磿鏉堫偁浜归柨鐕傛嫹
|
||||
// 闂傚倷娴囬~澶嬬娴犲纾块弶鍫亖娴滃綊鏌ㄩ悤鍌涘
|
||||
memset(recvpacket, 0, sizeof(recvpacket));
|
||||
int fromlen = sizeof(from);
|
||||
n = recvfrom(sockfd, recvpacket, sizeof(recvpacket), 0, (struct sockaddr *)&from, (socklen_t *)&fromlen);
|
||||
@ -1836,7 +1836,7 @@ int Ping(const char *ips, int timeout) {
|
||||
}
|
||||
|
||||
char *from_ip = (char *)inet_ntoa(from.sin_addr);
|
||||
// 闂備礁鎲$敮鍥磹閺嶎厼钃熼柛銉墮閸欏﹥銇勯弽銊ь暡闁稿骸锕弻锟犲礋闂堟稓浠撮梺鎼炲€栫划宀勵敊韫囨稒鍎庢い锕€绱歡闂備焦鐪归崝宀€鈧凹鍓欑叅闁哄秲鍔岀欢鐐烘煥閻曞倹瀚<EFBFBD>
|
||||
// 闂傚倷绀侀幉锛勬暜閸ヮ剙纾归柡宥庡幖閽冪喖鏌涢妷顔煎闁告瑥锕ラ妵鍕冀閵娧屾殹闂佺ǹ楠搁敃顏堝蓟閿熺姴绀嬮梻鍫熺〒娴犳挳姊洪幖鐐测偓鏍垝瀹€鍕垫晩闊洦绋掗崕搴€亜閿曗偓缁辨闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸嚬閸撴瑧鍙呴梺鍝勭Р閸斿瞼娆㈤悙鐑樼叆闁绘洖鍊圭€氾拷
|
||||
if (strcmp(from_ip, ips) != 0) {
|
||||
zlog_info(zct, "NowPingip:%s Fromip:%s NowPingip is not same to Fromip,so ping wrong!", ips, from_ip);
|
||||
close(sockfd);
|
||||
@ -1848,14 +1848,14 @@ int Ping(const char *ips, int timeout) {
|
||||
icmp = (struct icmp *)(recvpacket + (iph->ip_hl << 2));
|
||||
|
||||
zlog_info(zct, "ip:%s,icmp->icmp_type:%d,icmp->icmp_id:%d\n", ips, icmp->icmp_type, icmp->icmp_id);
|
||||
// 闂備礁鎲$敮鍥磹閺嶎厼钃熼柛銏¤抗ng闂備焦鎮堕崕鎶藉磻濞戔懞鍥蓟閵夈儳顦遍梺鍛婁緱閸ㄩ亶鎮鹃柆宥嗙厽婵☆垰鐏濋悡鎰版煃瑜滈崜銊╁箯閿燂拷
|
||||
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂備焦鎮堕崕鎶藉磻閻愬弬鐔稿緞鐎n偄鍔呴梺鍝勫暙閸婂骞楅敓锟<EFBFBD>
|
||||
// 闂傚倷绀侀幉锛勬暜閸ヮ剙纾归柡宥庡幖閽冪喖鏌涢姀陇鎶梟g闂傚倷鐒﹂幃鍫曞磿閹惰棄纾绘繛鎴旀嚍閸ヮ剙钃熼柕澶堝劤椤﹂亶姊洪崨濠佺繁闁搞劑浜堕幃楣冩焼瀹ュ棛鍘藉┑鈽嗗灠閻忔繈鎮¢幇鐗堢厓鐟滄粓宕滈妸鈺佺闁跨噦鎷<EFBFBD>
|
||||
if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == pid) // ICMP_ECHOREPLY闂傚倷鐒﹂幃鍫曞磿閹惰棄纾婚柣鎰棘閻旂ǹ绶為悗锝庡亜閸斿懘姊洪崫鍕殭闁稿﹤顭烽獮妤呮晸閿燂拷
|
||||
{
|
||||
// 婵犳鍠楃换鎰緤娴犲鍋夐柛鎾叉閻掑﹪姊洪鈧粔顕€宕戦幘璇茬劦妞ゆ帒瀚粈鍕煕濠靛棗顏柛搴㈡礋閺岋絽饪伴幇顓烆伓
|
||||
// 濠电姵顔栭崰妤冩崲閹邦喖绶ゅù鐘差儐閸嬪鏌涢幘鍙夘樂闁绘帒锕娲敆閳ь剛绮旈鈧畷鎴﹀箻鐠囪尙鍔﹀銈嗗笒鐎氼剛绮堥崟顖涚厱婵犻潧妫楅顏堟煕鎼淬垺绀嬮柡宀嬬到楗即骞囬鐑嗕紦
|
||||
zlog_info(zct, "icmp succecss ............. \n");
|
||||
break;
|
||||
} else if (cnt < 3) {
|
||||
// 闂備礁鎲¢悢顒傜不閹达箑鍨傛い鏍ㄧ矌绾捐偐鎲歌箛娑欏仺闁煎鍊楁す鎶芥煥閻曞倹瀚<EFBFBD>
|
||||
// 闂傚倷绀侀幉锟犳偄椤掑倻涓嶉柟杈剧畱閸ㄥ倹銇勯弽銊х煂缁炬崘鍋愰幉姝岀疀濞戞瑥浠洪梺鐓庮潟閸婃銇欓幎鑺ョ叆闁绘洖鍊圭€氾拷
|
||||
cnt++;
|
||||
continue;
|
||||
} else {
|
||||
@ -1887,41 +1887,41 @@ int get_netlink_status(const char *if_name) {
|
||||
return edata.data;
|
||||
}
|
||||
|
||||
// 闂佽绻愮换鎰涘☉娆愭珷婵°倕鎳庣€氬銇勯幒鍡椾壕閻熸粍濯藉▔鏇㈠焵椤掍胶鈯曟い銊ョ墦椤㈡牗鎷呴崷顓涙灃闂佸憡鐟ラˇ顖烆敁閺囥垺鐓曢柟鐑樺灦椤ユ瑩鎮归幇顔兼灈鐎殿噮鍋嗛埀顒佺⊕钃辨繛鍫濆缁辨挻鎷呯粙娆句痪闂佹悶鍔嶅畝鎼佸箚閸愵喖绀嬫い鎰剁到閳ь剙顭峰铏规嫚瑜庣€氾拷
|
||||
// 闂備浇顕х换鎰崲閹邦儵娑樷槈濞嗘劖鐝峰┑掳鍊曢幊搴b偓姘槹閵囧嫰骞掗崱妞惧闁荤喐绮嶆刊钘夆枖閺囥垹鐒垫い鎺嶈兌閳洘銇勯妸銉уⅵ妞ゃ垺鐗楅幏鍛村捶椤撴稒鐏冮梻浣告啞閻熴儵藝椤栫儐鏁侀柡鍥ュ灪閻撴洟鏌熼悜妯虹仸妞ゃ儲鐟╅幃褰掑箛椤斿吋鐏堥悗娈垮櫘閸嬪棝鍩€椤掍胶鈯曢拑杈ㄧ箾閸繂顣崇紒杈ㄦ尰閹峰懐绮欏▎鍙ョ棯闂備焦鎮堕崝宥呯暆閹间礁绠氶柛鎰靛枛缁€瀣亜閹板墎鍒伴柍褜鍓欓…宄邦潖閾忚瀚氱憸搴b偓姘炬嫹
|
||||
std::vector<int> splitVersion(const std::string &version) {
|
||||
std::vector<int> parts;
|
||||
std::stringstream ss(version);
|
||||
std::string part;
|
||||
|
||||
// 闂備胶鍎甸崑鎾诲礉鎼淬劌纾婚柨婵嗘婵瓨绻濇繛鎯т壕闁荤姵鍔楅崰鏍х暦濮樿泛骞㈡繛鎴炵懐閸氭绱撴担璇℃閻犱緤绲垮Σ鎰攽鐎n亞顦梺绯曞墲椤ㄥ懘藟韫囨稒鐓熸俊銈傚亾闁绘锕ら敃銏″閺夋垹鐓戦梺璺ㄥ櫐閹凤拷
|
||||
// 闂傚倷鑳堕崕鐢稿磻閹捐绀夐幖娣妼绾惧鏌ㄥ┑鍡橆棡濠殿垰鐡ㄧ换婵囩箾閹傚闂佽崵濮甸崝妤呭窗閺嵮呮殾婵ǹ娉涢獮銏$箾閹寸偟鎳愰柛姘焽缁辨挻鎷呯拠鈩冾吅闁荤姳绶ょ徊鍨i幇顑芥斀閻庯綆浜為ˇ顐︽⒑缁洖澧叉い銊ユ嚇钘熼煫鍥ㄧ⊕閻撶喐淇婇妶鍌氫壕闂佺粯顨呴敃銈夋晝閵忊€愁嚤闁哄鍨归悡鎴︽⒑鐠恒劌娅愰柟鍑ゆ嫹
|
||||
while (std::getline(ss, part, '.')) {
|
||||
parts.push_back(std::stoi(part)); // 闂佽绻愮换鎰涘Δ鍛瀭閹兼番鍔岀粈鍫ユ煙缂佹ê绗氶柛濠勬暬閺岋綁濡搁妷銉純闂佺ǹ瀛╅幐鍐茬暦濮樿泛骞㈡慨姗嗗幘閵堫噣姊虹涵鍜佸殐婵犫懇鍋撻柣鐘冲姉閸犳牕顕i銈傚亾濞戞鎴濃枔閿燂拷
|
||||
parts.push_back(std::stoi(part)); // 闂備浇顕х换鎰崲閹邦儵娑樜旈崨顓炵€柟鍏肩暘閸斿瞼绮堥崼銉︾厵缂備焦锚缁楁岸鏌涙繝鍕毈闁哄矉缍佹俊鎼佸Ψ閵夘喕绱旈梻浣呵圭€涒晠骞愰崘鑼殾婵ǹ娉涢獮銏℃叏濮楀棗骞橀柕鍫櫍濮婅櫣娑甸崪浣告異濠电姭鎳囬崑鎾绘煟閻樺啿濮夐柛鐘崇墪椤曪綁顢曢妶鍌氫壕婵炴垶顏伴幋婵冩灁闁跨噦鎷<EFBFBD>
|
||||
}
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
// 婵犳鍣徊鎯涙担鐑橆偨婵犻潧娲ㄩ埢鏃堟煏閸繂顏柛銈咁儔閺岋絽螖閳ь剟鎮ф繝鍌﹁€垮ù鍏兼綑閻鏌ㄩ悤鍌涘
|
||||
// 濠电姵顔栭崳顖滃緤閹灛娑欐媴閻戞﹩鍋ㄥ┑鐘绘涧濞层劑鍩㈤弮鍫熺厪闁割偅绻傞顓㈡煕閵堝拋鍎旈柡宀嬬到铻栭柍褜鍓熼幃褎绻濋崒锕佲偓鍨归崗鍏肩稇闁活厽顨婇弻銊╂偆閸屾稑顏<EFBFBD>
|
||||
int compareVersions(const std::string &version1, const std::string &version2) {
|
||||
std::vector<int> v1 = splitVersion(version1);
|
||||
std::vector<int> v2 = splitVersion(version2);
|
||||
|
||||
// 闂備胶鎳撻悘姘跺磿閹惰棄鏄ョ€光偓閸曨偄鐝橀梺閫炲苯澧存慨濠傛贡閹瑰嫰濡搁敂鐐闂備胶绮〃鍛存偋婵犲偊鑰垮ù鍏兼綑閻鏌i幋锝嗩棄闁告柣鍎甸弻娑㈠箳閹寸儐妫﹂梺鍝勬妞存悂骞嗛弮鍫熸櫢闁跨噦鎷<EFBFBD>
|
||||
// 闂傚倷鑳堕幊鎾绘倶濮樿泛纾块柟鎯版閺勩儳鈧厜鍋撻柛鏇ㄥ亜閻濇﹢姊洪柅鐐茶嫰婢у瓨鎱ㄦ繝鍌涜础闁圭懓瀚版俊鎼佹晜閻愵剚顔忛梻鍌欒兌缁垶銆冮崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨婇弻锝夊箣閿濆棭妫勯梺鍛婃煟閸庣敻寮诲☉銏犵闁瑰鍎愬Λ锕傛⒑閸濆嫭顥″瀛樻倐楠炲棝寮崼鐔告闂佽法鍣﹂幏锟<EFBFBD>
|
||||
size_t maxLength = std::max(v1.size(), v2.size());
|
||||
|
||||
for (size_t i = 0; i < maxLength; ++i) {
|
||||
int num1 = i < v1.size() ? v1[i] : 0; // 濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞閹邦剝鎽曢梺鍦濠㈡﹢宕濋妷鈺傜厱闁圭儤鍨堕ˉ娆戠磼濡も偓椤﹂亶鍩€椤掍胶鈯曢柨姘節閳ь剟顢旈崼鐔告珫閻庡厜鍋撻柛鎰亾缂嶅﹥绻涢幋鐐存儓闁瑰嚖鎷<EFBFBD>0
|
||||
int num1 = i < v1.size() ? v1[i] : 0; // 婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓濋幗鏇㈡⒑閸︻厼顣兼繝銏★耿瀹曟繈濡烽埡鍌滃幈闂佸湱鍎ら崹鍫曀夊▎鎴犵<婵°倐鍋撴い锕備憾閸┾偓妞ゆ帊鑳堕埊鏇㈡煥濮橆厾绡€闁逞屽墴椤㈡棃宕奸悢鍛婄彨闁诲骸鍘滈崑鎾绘煕閹邦喖浜剧紓宥咃攻缁绘盯骞嬮悙瀛樺創闂佺懓鍤栭幏锟<EFBFBD>0
|
||||
int num2 = i < v2.size() ? v2[i] : 0;
|
||||
|
||||
if (num1 > num2) return 1; // version1 濠电姰鍨归悥銏ゅ磼濠婂棗顥<EFBFBD> version2
|
||||
if (num1 < num2) return -1; // version1 闂佽绻愮换鎰崲鐎n剝濮抽柨鐕傛嫹 version2
|
||||
if (num1 > num2) return 1; // version1 婵犵數濮伴崹褰掓偉閵忋倕纾兼繝濠傛椤ワ拷 version2
|
||||
if (num1 < num2) return -1; // version1 闂備浇顕х换鎰崲閹邦喗宕查悗锝庡墲婵娊鏌ㄩ悤鍌涘 version2
|
||||
}
|
||||
|
||||
return 0; // 闂備胶绮〃鍛存偋婵犲偊鑰垮ù鍏兼綑閻顪冪€n亜顒㈢紒浣圭叀閺屾稑顫濋悙顒€顏<EFBFBD>
|
||||
return 0; // 闂傚倷鑳剁划顖炪€冮崨瀛樺亱濠电姴鍋婇懓鍨归崗鍏肩稇闁活厽顨呴—鍐偓锝庝簻椤掋垻绱掓担鍦弨闁哄本绋戦~婵嬫倷椤掆偓椤忥拷
|
||||
}
|
||||
|
||||
void Binary_Bit(unsigned char *p_data, unsigned char position, int flag) {
|
||||
//濠电偛鐡ㄧ划宀勬儗娴g儤宕叉慨妞诲亾鐎规洘宀搁幊婊堟偨闂堟稑绂忓┑鐐舵彧缁茬晫绮旈崼鏇熷仾闁糕剝绋掗埛鏍煠閹间焦娑ч柣蹇旑殜閺屻倝寮堕幐搴℃缂備焦妫戦幏锟<EFBFBD> position濠电偞鍨堕幑浣割浖閵娧呯闁告稒娼欓弸渚€鏌ㄩ悤鍌涘(濠电偛顕刊鎾箯閿燂拷0 闁诲孩顔栭崰鎺楀磻閹炬枼鏀芥い鏇炴鐎氾拷)
|
||||
//婵犵數鍋涢悺銊у垝瀹€鍕剹濞达絿鍎ゅ畷鍙夋叏濡炶浜鹃悗瑙勬礃瀹€鎼佸箠濠婂牊鍋ㄩ梻鍫熺☉缁傚繐鈹戦悙鑸靛涧缂佽尙鏅划鏃堝醇閺囩喎浠鹃梺绯曞墲缁嬫帡鍩涢弽顓熺厾闁归棿鐒﹀☉褔鏌h箛鏃戞疁闁哄被鍊濆鍫曞箰鎼粹剝顏熺紓鍌欑劍濡垿骞忛敓锟<EFBFBD> position婵犵數鍋為崹鍫曞箲娴e壊娴栭柕濞у懐顦梺鍛婄⊕濞兼瑩寮告笟鈧弻銊╂偆閸屾稑顏<E7A891>(婵犵數鍋涢顓熷垔閹绢喖绠柨鐕傛嫹0 闂佽瀛╅鏍窗閹烘纾婚柟鐐灱閺€鑺ャ亜閺囩偞顥為悗姘炬嫹)
|
||||
if (flag) {
|
||||
*p_data |= 0x01 << (position);
|
||||
} else {
|
||||
|
||||
@ -6,38 +6,6 @@
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
|
||||
// #include <stdio.h>
|
||||
// #include <unistd.h>
|
||||
// #include <sys/socket.h>
|
||||
// #include <netinet/in.h>
|
||||
// #include <net/if.h>
|
||||
// #include <stdlib.h>
|
||||
// #include <memory.h>
|
||||
// #include <string>
|
||||
// #include <list>
|
||||
// #include <boost/algorithm/string/split.hpp>
|
||||
// #include <boost/thread/mutex.hpp>
|
||||
// #include <boost/algorithm/string/classification.hpp>
|
||||
// #include <iostream>
|
||||
// #include <fstream>
|
||||
// #include <arpa/inet.h>
|
||||
// #include <sys/ioctl.h>
|
||||
// #include <boost/lexical_cast.hpp>
|
||||
// #include <sys/statfs.h>
|
||||
// #include <json/json.h>
|
||||
// #include <sys/mman.h>
|
||||
// #include <fcntl.h>
|
||||
// #include <memory.h>
|
||||
// #include <sys/ipc.h> //ipc
|
||||
// #include <sys/shm.h>
|
||||
// #include "dirent.h"
|
||||
// #include <iconv.h>
|
||||
// #include <termios.h>
|
||||
// #include <netinet/in.h>
|
||||
// #include <netinet/ip.h>
|
||||
// #include <netinet/ip_icmp.h>
|
||||
// #include <netdb.h>
|
||||
|
||||
typedef struct statfs DISK, *pDISK;
|
||||
|
||||
#define SECTION_MAX_LEN 256
|
||||
|
||||
3
main.cpp
3
main.cpp
@ -128,6 +128,9 @@ int main(int argc, char *argv[]) {
|
||||
boost::thread startHeart(HeartRep);
|
||||
startHeart.detach();
|
||||
|
||||
boost::thread DiskCheck(attrs, DiskSpaceCheck);
|
||||
DiskCheck.detach();
|
||||
|
||||
if (lzo_init() != LZO_E_OK) {
|
||||
zlog_error(zbt, "internal error - lzo_init() failed !!!");
|
||||
zlog_error(zbt, "(this usually indicates a compiler bug - try recompiling\nwithout optimizations, and enable '-DLZO_DEBUG' for diagnostics)");
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include <sys/sysinfo.h>
|
||||
#include <dirent.h>
|
||||
#include <boost/typeof/typeof.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <zlog.h>
|
||||
#include <json/json.h>
|
||||
#include "mqttclient/mqtt_client.h"
|
||||
@ -25,6 +26,7 @@ extern zlog_category_t *zbt;
|
||||
static std::string serverPort;
|
||||
|
||||
Dial dial;
|
||||
static int clean_memory = 0;
|
||||
|
||||
void StartCgiServer() {
|
||||
zlog_info(zbt, "start deal cgi");
|
||||
@ -340,3 +342,84 @@ void RecvUpdateFile() {
|
||||
system("/etc/init.d/sysupgrade.sh");
|
||||
}
|
||||
}
|
||||
|
||||
bool InsufficientFreeMemory() {
|
||||
long mem_free = -1;
|
||||
char name1[20];
|
||||
std::string strMemFree = GetFileContent("/proc/meminfo", 2);
|
||||
sscanf(strMemFree.c_str(), "%s%ld", name1, &mem_free);
|
||||
mem_free = mem_free / 1024;
|
||||
zlog_warn(zct, "free memory: %ld MB", mem_free);
|
||||
if (mem_free < 80) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void CleanLogFile(std::string log_dir, size_t retain) {
|
||||
std::vector<LogFileProperty> vec;
|
||||
boost::filesystem::path directory = log_dir;
|
||||
try {
|
||||
if (boost::filesystem::exists(directory) && boost::filesystem::is_directory(directory)) {
|
||||
for (auto&& file : boost::filesystem::directory_iterator(directory)) {
|
||||
if (boost::filesystem::is_regular_file(file)) {
|
||||
LogFileProperty file_prop;
|
||||
std::cout<<"["<<file.path()<<"]"<<std::endl;
|
||||
file_prop.name = file.path().string();
|
||||
file_prop.time_stamp = boost::filesystem::last_write_time(file);
|
||||
vec.push_back(file_prop);
|
||||
}
|
||||
}
|
||||
if (vec.size() > 0) {
|
||||
std::sort(vec.begin(), vec.end());
|
||||
if (vec.size() <= retain) {
|
||||
zlog_warn(zct, "[DiskSpaceCheck] there is no enough file to clean:%d", vec.size());
|
||||
return;
|
||||
}
|
||||
int total = vec.size();
|
||||
|
||||
for (int i = retain; i < total; ++i) {
|
||||
boost::filesystem::remove(vec[i].name);
|
||||
zlog_warn(zct, "[DiskSpaceCheck] *** delete %s", vec[i].name.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (const boost::filesystem::filesystem_error& ex) {
|
||||
zlog_error(zct, " Error accessing directory: %s", ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
void DiskSpaceCheck() {
|
||||
std::string directory = "/opt/log";
|
||||
while (1) {
|
||||
boost::filesystem::space_info si = boost::filesystem::space("/opt");
|
||||
zlog_warn(zct, "disk free space:%llu for /opt", si.free);
|
||||
if (si.free <= 20000000) {
|
||||
CleanLogFile(directory, 10);
|
||||
boost::filesystem::space_info si1 = boost::filesystem::space("/opt");
|
||||
if (si1.free <= 20000000) {
|
||||
zlog_warn(zct, "[DiskSpaceCheck] can not release enough space and clean more log file");
|
||||
CleanLogFile(directory, 5);
|
||||
}
|
||||
}
|
||||
|
||||
if (clean_memory == 10) { // 10*30 = 300秒清理一次内存
|
||||
clean_memory = 0;
|
||||
if (InsufficientFreeMemory()) {
|
||||
system("sync");
|
||||
sleep(10);
|
||||
system("echo 3 > /proc/sys/vm/drop_caches");
|
||||
if (InsufficientFreeMemory()) {
|
||||
zlog_error(zct, "can not release more space, so reboot");
|
||||
system("sync");
|
||||
sleep(3);
|
||||
system("reboot");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
clean_memory++;
|
||||
}
|
||||
sleep(30);
|
||||
}
|
||||
}
|
||||
@ -1,20 +1,14 @@
|
||||
// #include <signal.h>
|
||||
// #include <sys/ioctl.h>
|
||||
// #include <sys/socket.h>
|
||||
// #include <unistd.h>
|
||||
// #include <fstream>
|
||||
// #include <iostream>
|
||||
// #include <boost/thread/thread.hpp>
|
||||
// #include <boost/date_time/posix_time/posix_time.hpp>
|
||||
// #include <boost/lexical_cast.hpp>
|
||||
// #include "common/global.hpp"
|
||||
// #include "common/common_func.hpp"
|
||||
// #include "mqttclient/mqtt_client.h"
|
||||
// #include "localserver/local_server.hpp"
|
||||
// #include "utility/search_dev.hpp"
|
||||
// #include "utility/tcp_cgi.hpp"
|
||||
// #include "utility/udp_scan.hpp"
|
||||
#include <string>
|
||||
|
||||
class LogFileProperty {
|
||||
public:
|
||||
std::string name;
|
||||
long time_stamp;
|
||||
|
||||
bool operator<(const LogFileProperty& rhs) const {
|
||||
return time_stamp > rhs.time_stamp;
|
||||
}
|
||||
};
|
||||
/***********************************
|
||||
*************线程处理函数***********
|
||||
************************************/
|
||||
@ -33,3 +27,4 @@ void Dial5G();
|
||||
void InitModule();
|
||||
void RunLED();
|
||||
void RecvUpdateFile();
|
||||
void DiskSpaceCheck();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user