c语言延时30s的程序,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...
/*这是一个后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序。
要想使用它必须要配置好c语言环境,比如安装有mingw的codeblocks
实现的方式就是每隔一段时间就去ping一下百度,如果ping失败了就启动上网程序,上网程序会自动连接网络。
使用时将该软件加入开机自启软件即可*/
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )#include#include#include#include#include#include#include#ifdef WIN32
#include
#else#include //linux下头文件
#endif
#define FILE_MAX_SIZE (1024*1024)//日志文件最大为1M
using namespacestd;/*获得当前时间字符串
@param buffer [out]: 时间字符串
@return 空*/
void get_local_time(char*buffer)
{
time_t rawtime;struct tm*timeinfo;
time(&rawtime);
timeinfo= localtime(&rawtime);
sprintf(buffer,"%04d-%02d-%02d %02d:%02d:%02d",
(timeinfo->tm_year+1900), timeinfo->tm_mon, timeinfo->tm_mday,
timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
}/*获得日志文件大小
@param filename [in]: 文件名
@return 文件大小*/
long get_file_size(char*filename)
{long length = 0;
FILE*fp =NULL;
fp= fopen(filename, "rb");if (fp !=NULL)
{
fseek(fp,0, SEEK_END);
length=ftell(fp);
}if (fp !=NULL)
{
fclose(fp);
fp=NULL;
}returnlength;
}/*写入日志文件
@param filename [in]: 日志文件名
@param max_size [in]: 日志文件大小限制
@param buffer [in]: 日志内容
@param buf_size [in]: 日志内容大小
@return 空*/
void write_log_file(char* filename, long max_size, char*buffer, unsigned buf_size)
{if (filename != NULL && buffer !=NULL)
{//文件超过最大限制, 删除
long length =get_file_size(filename);if (length >max_size)
{
unlink(filename);//删除文件
}//写日志
{
FILE*fp;
fp= fopen(filename, "at+");if (fp !=NULL)
{char now[32];
memset(now,0, sizeof(now));
get_local_time(now);
fwrite(now, strlen(now)+1, 1, fp);
fwrite(buffer, buf_size,1, fp);
fclose(fp);
fp=NULL;
}
}
}
}/*后台运行的、每隔25s检查一次的、带有日志功能的断网重新连接程序*/
voidp()
{
HWND hwnd;
hwnd=FindWindow("ConsoleWindowClass",NULL); //处理顶级窗口的类名和窗口名称匹配指定的字符串,不搜索子窗口。
if(hwnd)
{
ShowWindow(hwnd,SW_HIDE);//设置指定窗口的显示状态
}while(1)
{
_sleep(30000);//睡眠30s
clock_t start, end;//计时
start =clock();
system("ping baidu.com");//system执行cmd命令, 可以用cout打印返回结果
end=clock();double duration = ((double)end - start) /CLOCKS_PER_SEC;bool flag = true; //默认有网
if (duration > 10.0)
{
flag= false;
system("start /b C:\\\"Program Files\"\\\"Ruijie Networks\"\\\"Ruijie Supplicant\"\\RuijieSupplicant.exe");//路径用\\,双引号为转义字符,前面要加\
}//写入日志文件
char buffer[32];
memset(buffer,0, sizeof(buffer));if(flag)
sprintf(buffer,"====> %s\n", "有网");elsesprintf(buffer,"====> %s\n", "没有网#######################################################################################################");
write_log_file("log.txt", FILE_MAX_SIZE, buffer, strlen(buffer));
}
}/*计时函数,没有用到*/
voidg()
{
clock_t start, end;
start=clock();
_sleep(1234);
end=clock();double duration = ((double)end - start) /CLOCKS_PER_SEC;
printf("%f second", duration);
}intmain()
{
p();return 0;
}
c语言延时30s的程序,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...相关推荐
- c语言程序窗口后台持续监测,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...
/*这是一个后台运行的.每隔30s检查一次的.带有日志功能的断网重新连接程序. 要想使用它必须要配置好c语言环境,比如安装有mingw的codeblocks 实现的方式就是每隔一段时间就去ping一下 ...
- Linux 下后台运行程序,查看和关闭后台运行程序(转载)
1.运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令. (1)&命令 功能:加在一个命令的最后,可以把这 ...
- Linux 下后台运行程序,查看和关闭后台运行程序
1.运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令. (1)&命令 功能:加在一个命令的最后,可以把这 ...
- windows下断网启动程序
startIE.cmd @echo off rem set the charsert: utf-8 CHCP 65001 rem 上面这句代码表示当前这个文件是utf-8编码rem 请求管理员权限 @ ...
- linux查看 后台运行的程序看不出来,linux后台运行、关闭和查看程序的方法
一.关闭终端后,后台依然运行的程序的方法 nohup python main.py & (其中python main.py就是我们要运行的程序) 用这个命令,关闭终端后,在另一个终端查看运行的 ...
- linux java后台运行_Java程序在Linux中实现后台运行
1.运行脚本 脚本如下,这个脚本存在一点问题,Log4j稍微有点问题,但是对运行及日志记录没有影响,日志是通过将所有控制台数据全部写入文件的形式记录的. #!/bin/sh #author:wangc ...
- llinux c 语言延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #define B break void de(int timee) { unsi ...
- C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题
C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题 参考文章: (1)C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题 ( ...
- 如何把一个java程序打包成exe文件,运行在没有java虚
如何把一个java程序打包成exe文件,运行在没有java虚 核心提示:首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了:但是exe文件在没有安装jre的电脑上不能运行,如果要 ...
最新文章
- 清华自研深度学习框架「计图」开源!多项任务性能超过PyTorch
- python根据列表形成字典。
- 关于webpack一些路径
- python数据分类_Python数据挖掘实践—KNN分类
- android类似QQ空间,微信朋友圈,微博主页源码
- android app resign之后安装提示INSTALL_PARSE_FAILED_NO_CERTIFICATES的解决办法
- 父子/父孙传参(Provide/inject方式)
- sql顶部菜单项消失_SQL选择顶部
- 我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)...
- 牛逼!分享一款基于 SpringBoot 的微信点餐系统(附源码)
- 常见的总线通信方式及其特点
- threejs的环境光+点光源+平行光源+球面光 以及hepler理解+阴影()
- Mac (M1) 软件及环境搭建
- mysql 保留小数位数
- QGtkStyle was unable to detect the current GTK+ theme
- 四川南溪仙源长江公路大桥通车 结束千年摆渡过江历史
- 【Linux进程】Linux进程
- python 测试用例 自动生成目录_如何在python中自动向测试套件添加十几个测试用例...
- MAE源代码理解 part1 : 调试理解法
- Android MVVM框架搭建(七)Permission、AlertDialog、拍照和相册选取
热门文章
- 异常检测 | Street Scene
- Codeforces Round #620 (Div. 2) D 贪心 revers 的妙用 编程思维的降维打击
- Vmware WorkStation(中文名“威睿工作站”) 网卡图解
- 安卓入门,简单画图板的实现
- javascript汉字转换成拼音(部分)
- 华为p40pro换鸿蒙,华为p40Pro、p40怎么升级鸿蒙系统
- bootstrap4 横向表格
- python爬取沪深所有股票数据并生成Excel文件
- 3D格式转换工具HOOPS助力甲骨文公司成功升级3D浏览器AutoVue
- xamarin android 发生一个或多个错误