LINUX下C语言编程怎么打印日志

LINUX下C语言编程怎么打印日志,第1张

日志写到文件中去,在到文件中去看日志

例如:

int

mig_log(fmt,va_alist)

char

*fmt

va_dcl

{

va_list

ap

FILE

*fp

char

log_file[81]

struct

tm

*p_tm

time_t

clock

ap=(char

*)&va_alist

time(&clock)

p_tm=localtime(&clock)

sprintf(log_file,"%s/mig_%4d%.2d%.2d.log",

getenv("HOME"),

p_tm->tm_year+1900,

p_tm->tm_mon+1,

p_tm->tm_mday)

fp=fopen(log_file,"at")

if(fp==(FILE

*)0)

{

fprintf(stderr,"mig_err_log():can't

open

the

file

%s

!\n",log_file)

return

}

fprintf(fp,"%.2d/%.2d/%4d

%.2d:%.2d:%.2d

",

p_tm->tm_mon+1,\

p_tm->tm_mday,\

p_tm->tm_year+1900,\

p_tm->tm_hour,\

p_tm->tm_min,\

p_tm->tm_sec)

vfprintf(fp,fmt,ap)

fclose(fp)

}

这个就是写日志的函数

你这样调用:mig_log("日志开始[%s]->[%d]\n",__FILE__,__LINE__)

mig_log("日志开始!\n")都可以的

c++

用的是

delete吧..

我觉得系统会自动调用释放内存的函数的

应该不用自己加的.

无论返回什麽结构

在内存调用完的每个函数的入口地址都是指向函数的指针阿.

就像你的例子

tm*

指向

localtime()入口地址

如果系统没有自动释放的话

后果将不堪设想喔..

想想全局变量带来的危机

其实道理差不多

所以不用free了吧..

我猜的.

哈哈.

你是指延迟函数还是定时调用,比如到11:12:13秒执行某个函数?

如果是延时函数用

usleep(usec) // 微妙

sleep(sec)    // 秒

如果是定时执行的话,你只能开个线程或while,每隔1s判断下当前系统时间,

struct   tm     *ptm 

long       ts 

int         y,m,d,h,n,s 

ts   =   time(NULL) 

ptm   =   localtime(&ts) 

y   =   ptm-> tm_year+1900     //年 

m   =   ptm-> tm_mon+1             //月 

d   =   ptm-> tm_mday               //日 

h   =   ptm-> tm_hour               //时 

n   =   ptm-> tm_min                 //分 

s   =   ptm-> tm_sec                 //秒

照着上面的格式组成字符串进行判断,到点了就执行就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7361479.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存