1. 转自:https://bbs.csdn.net/topics/391943383
    #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #ifdef _MSC_VER
  5. #pragma warning(disable:4996)
  6. #include <windows.h>
  7. #include <io.h>
  8. #else
  9. #include <unistd.h>
  10. #include <sys/time.h>
  11. #include <pthread.h>
  12. #define CRITICAL_SECTION pthread_mutex_t
  13. #define _vsnprintf vsnprintf
  14. #endif
  15. //Log{
  16. #define MAXLOGSIZE 20000000
  17. #define MAXLINSIZE 16000
  18. #include <time.h>
  19. #include <sys/timeb.h>
  20. #include <stdarg.h>
  21. char logfilename1[]="MyLog1.log";
  22. char logfilename2[]="MyLog2.log";
  23. static char logstr[MAXLINSIZE+];
  24. char datestr[];
  25. char timestr[];
  26. char mss[];
  27. CRITICAL_SECTION cs_log;
  28. FILE *flog;
  29. #ifdef _MSC_VER
  30. void Lock(CRITICAL_SECTION *l) {
  31. EnterCriticalSection(l);
  32. }
  33. void Unlock(CRITICAL_SECTION *l) {
  34. LeaveCriticalSection(l);
  35. }
  36. #else
  37. void Lock(CRITICAL_SECTION *l) {
  38. pthread_mutex_lock(l);
  39. }
  40. void Unlock(CRITICAL_SECTION *l) {
  41. pthread_mutex_unlock(l);
  42. }
  43. #endif
  44. void LogV(const char *pszFmt,va_list argp) {
  45. struct tm *now;
  46. struct timeb tb;
  47.  
  48. if (NULL==pszFmt||==pszFmt[]) return;
  49. _vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);
  50. ftime(&tb);
  51. now=localtime(&tb.time);
  52. sprintf(datestr,"%04d-%02d-%02d",now->tm_year+,now->tm_mon+,now->tm_mday);
  53. sprintf(timestr,"%02d:%02d:%02d",now->tm_hour ,now->tm_min ,now->tm_sec );
  54. sprintf(mss,"%03d",tb.millitm);
  55. printf("%s %s.%s %s",datestr,timestr,mss,logstr);
  56. flog=fopen(logfilename1,"a");
  57. if (NULL!=flog) {
  58. fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);
  59. if (ftell(flog)>MAXLOGSIZE) {
  60. fclose(flog);
  61. if (rename(logfilename1,logfilename2)) {
  62. remove(logfilename2);
  63. rename(logfilename1,logfilename2);
  64. }
  65. } else {
  66. fclose(flog);
  67. }
  68. }
  69. }
  70. void Log(const char *pszFmt,...) {
  71. va_list argp;
  72.  
  73. Lock(&cs_log);
  74. va_start(argp,pszFmt);
  75. LogV(pszFmt,argp);
  76. va_end(argp);
  77. Unlock(&cs_log);
  78. }
  79. //Log}
  80. int main(int argc,char * argv[]) {
  81. int i;
  82. #ifdef _MSC_VER
  83. InitializeCriticalSection(&cs_log);
  84. #else
  85. pthread_mutex_init(&cs_log,NULL);
  86. #endif
  87. for (i=;i<;i++) {
  88. Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
  89. }
  90. #ifdef _MSC_VER
  91. DeleteCriticalSection(&cs_log);
  92. #else
  93. pthread_mutex_destroy(&cs_log);
  94. #endif
  95. return ;
  96. }
  97. //1-79行添加到你带main的.c或.cpp的那个文件的最前面
  98. //81-86行添加到你的main函数开头
  99. //90-94行添加到你的main函数结束前
  100. //在要写LOG的地方仿照第88行的写法写LOG到文件MyLog1.log中

shell脚本 统计一段程序运行时间【转】的更多相关文章

  1. Shell脚本统计文件行数

    Shell脚本统计文件行数 转自 http://www.jb51.net/article/61943.htm    示例:row_count.sh文件 awk '{print NR}' row_cou ...

  2. 采用shell脚本统计代码的行数

    刚毕业那会儿有一次去台湾公司面试,我问多行代码怎么写.我从来没有想过这个问题,粗略计算,.惊叹:大概几十万行不行. 最近整理资料,看着eclipse左边全面上市,我觉得这个东西.代码共同拥有的行倒底总 ...

  3. shell脚本统计多个CPU利用率

    本节主要内容:top命令统计CPU的利用率 一,问题分析 MySQL在Linux下是多线程的,而且只能将多个线程分布到一个CPU上.因此,使用小型服务器,或者PC SERVER,多个CPU利用率并不高 ...

  4. 利用shell脚本统计文件中出现次数最多的IP

    比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可 ...

  5. ssh远程调用之shell脚本远程调用应用程序

    1.引子 前几天有一个需求是这样的:本机的shell脚本,通过远程调用另一台机子上的shell脚本,来完成对远程机子上分发的Java程序的执行和其他操作.看上去挺容易,实际上也不难. 第一步:用scp ...

  6. Shell脚本 统计店中店导出数据

    有一个数据文件  yue.csv  是这样的   #head yue.csv  日期,商家名称,要求在线数,当天在线数,要求在线时长,在线时长达标数,   ……"2017-12-31&quo ...

  7. 写个shell脚本依次运行每个程序半小时

    @echo off :: 运行时间1800000毫秒 echo wscript.sleep 1800000 >run.vbs ::运行Debug/lab1.exe程序,后面是参数 start D ...

  8. 通过shell脚本统计elasticsearch indices每天的数量以及大小

    前情提要: 最近elasticsearch集群总出问题,之前虽然修复了,现在又出现新的问题,于是PM要求拉取elasticsearch每天建立的索引有多少,索引有多大,需要对机器进行评估 客户现场无法 ...

  9. C#计算一段程序运行时间的三种方法

    第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...

随机推荐

  1. Feature Selection

    两方面(发散,相关)~三方法(FWE) F:方皮卡互 W:RFE E:惩罚树 一.简介 我们的数据处理后,喂给算法之前,考虑到特征的实际情况,通常会从两个方面考虑来选择特征: 1)特征是否发散:如果一 ...

  2. 【.NET】VS 本地调试 无法加载Json文件

    1.如果要是发布到iis,还加载不出来,那就要配置一下MIME类型: 2.本地调试时,无法加载json文件: 解决方案: 在web.config中添加如下配置:mimeMap <system.w ...

  3. TranslateMessage消息翻译和DispatchMessage消息分发

    TranslateMessage函数将虚拟键消息转换成字符消息.比如: 消息WM_KEYDOWN和WM_KEYUP组合产生一个WM_CHAR或WM_DEADCHAR消息. 消息WM_SYSKEYDOW ...

  4. 互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)

    1.Linux“线程” 进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程” ...

  5. Hadoop记录-hadoop集群常见问题汇总

    [问题1]HBase Shell:ERROR: org.apache.hadoop.hbase.IPc.ServerNotRunningYetException: Server is not runn ...

  6. HTML汇总以及CSS的一些开端

    一.HTML初探 1.HTML(HyperText Markup Language):超文本标记语言指的就是超跃了txt文件,能够在里面进行一些例如:就是指页面内可以包含图片.链接 .甚至音乐.程序等 ...

  7. canvas加载图片需要二次刷新的问题

    如题:此问题我也经在百度问问上进行了解答.https://zhidao.baidu.com/question/1048045241465845579.html 好吧,难怪现在百度那么坑人,理论水军专家 ...

  8. 【c++】编译器为我们实现了几个类成员函数?

    #include <cassert> #include <complex> #include <iostream> class Empty{}; Empty e; ...

  9. PHP7 网络编程(二)daemon守护进程

    前言 在一个多任务的计算机操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的计算机程序.此类程序会被以进程的形式初始化.守护进程程序的名称通常以字母“ ...

  10. 明白生产环境中的jvm参数

    明白生产环境中的jvm参数 写代码的时候,程序写完了,发到线上去运行,跑一段时间后,程序变慢了,cpu负载高了--一堆问题出来了,所以了解一下生产环境的机器上的jvm配置是有必要的.比如说: JDK版 ...