
例如:
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 *ptmlong 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 //秒
照着上面的格式组成字符串进行判断,到点了就执行就可以了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)