Linux共享库 日志方法
mylog.h
#ifdef __cplusplus
extern "C"
{
#endif //写日志函数
//path:日志文件名
//msg:日志信息
int writelog(const char *path, const char * msg); #ifdef __cplusplus } #endif
mylog.c
//日志共享库
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h> //获取当前时间字符串
int Gettimestr(char * buf)
{
time_t tData = ;
//获取当前系统时间
time(&tData);
//定义时间结构体变量
struct tm * eventTime = NULL;
//将time_t类型转化成时间结构体类型
eventTime = localtime(&tData);
//tm_year表示年份,以1900为标准,1900的值是0,1901的值是1
int iyear = eventTime->tm_year + ;
//tm_mon表示月份,从0开始到11结束,按照通常习惯应该从1月份开始
int imon = eventTime->tm_mon + ;
//tm_wday:表示一个星期的第几天 从1开始7结束
//tm_yday:表示一年的第几天
//tm_mday:表示正常的月天数
int iday = eventTime->tm_mday;
//时分秒
int ihour = eventTime->tm_hour;
int imin = eventTime->tm_min;
int isec = eventTime->tm_sec;
//拼接时间
char timestr[] = { };
sprintf(timestr, "%04d-%02d-%02d %02d:%02d:%02d", iyear, imon, iday, ihour,
imin, isec);
strcpy(buf, timestr);
return ;
} //写日志
int writelog(const char *path, const char * msg)
{
if (path == NULL || msg == NULL)
{
printf("writelog() 传入参数不可以为空!\n");
return -;
}
//open the file stream
FILE * pfa = NULL;
pfa = fopen(path, "a");
if (pfa == NULL)
{
printf("open the file failed ! error message : %s\n", strerror(errno));
return -;
}
char strtime[] = { };
Gettimestr(strtime);
char resultmsg[] = { };
sprintf(resultmsg, "%s \n \t %s\n", strtime, msg);
fputs(resultmsg, pfa);
fclose(pfa);
pfa = NULL;
return ;
}
makefile
.SUFFIXES:.c .o
CC=gcc
SRCS=mylog.c
OBJS=$(SRCS:.c=.o)
EXEC=libmylog.so start:$(OBJS)
$(CC) -shared -o $(EXEC) $(OBJS)
@echo "^_^-----OK------^_^"
.c.o:
$(CC) -Wall -g -fPIC -o $@ -c $<
clean:
rm -f $(OBJS)
rm -f $(EXEC)
Linux共享库 日志方法的更多相关文章
- linux环境 :Linux 共享库LIBRARY_PATH, LD_LIBRARY_PATH 与ld.so.conf
参考: 1. Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默 ...
- linux共享库
linux共享库 linux中共享库一般以.so.x.y.z 命名,其中x,y,z分别为主版本号.次版本号.发布版本号.同一个库,主版本号不同则相互不兼容:主版本相同,次版本号高的库比次版本号低的库有 ...
- Linux共享库两种加载方式简述
Linux共享库两种加载方式简述 动态库技术通常能减少程序的大小,节省空间,提高效率,具有很高的灵活性,对于升级软件版本也更加容易.与静态库不同,动态库里面的函数不是执行程序本身 的一部分,而是 ...
- linux共享库加载
参考自: <<程序员的自我修养--链接.装载与库>> 第八章 Linux共享库的组织 以下截取部分内容 (这本书比较好的讲解了从程序的链接,装载,到运行) 共享库的兼容性 li ...
- linux共享库的版本控制
前几天看到一篇介绍linux共享库版本控制及使用的文章,觉得不错,这里就与大家分享一下. 1. Linux约定 经常看到Linux中,共享库的名字后面跟了一串数字,比如:libperl.so.5.18 ...
- Linux Linux共享库
so文件在linux中为共享库,与windows下的dll类似. so文件中的函数可供多个进程调用,最大可能的提供二进制代码复用. 共享库可以使代码的维护工作大大简化,当修正了一些错误或者添加了新特性 ...
- Linux共享库、静态库、动态库详解
1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用.程序函数库 ...
- Linux 共享库(动态库)
Linux 系统上有两类根本不同的 Linux 可执行程序.第一类是静态链接的可执行程序.静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”.因为这一原因,静态可执行程序不依赖任何外 ...
- Linux共享库简单总结
库 静态库 编译的二进制会重新包含一份静态库的副本 共享库 编译 gcc -shared -o file.c -fPIC 链接 ld ld-linux.so.2 可执行程序–>动态依赖表 流程: ...
随机推荐
- GitHub 基本常用知识解答2
1.如何拥有一个Git仓库的两种途径 (1)在已有的目录中,初始化一个新的. (2) 比如一个新的项目,或者一个已存在的项目,但该项目尚未有版本控制.如果你想要复制一份别人的项目, 或者与别人合作某个 ...
- Android学习一(入门)
一.Android 系统简介 1.1.1G-4G 1G:模拟制式手机,1995年问世的第一代模拟制式手机,只能进行语音通话, 2G:手机使用GSM,CDMA(9K/s),增加了接收数据的功能 2.5G ...
- 网络开始---多线程---GCD-01-基本使用(掌握)(六)
/** GCD两个核心概念:任何和队列 任务:执行什么操作 队列:用来存放任务 使用就2个步骤 1.定制任务 2.将任务添加到队列中 任务的取出队列原则:FIFO原则: 先进先出,后进后出 */ #i ...
- 招聘一个靠谱的 iOS程序员
一个靠谱的简历 简历非常能反映一个人的性格和水平,相比于你在学校获得多少奖项,工作经历.项目经 历.熟悉的技术等更加关键,如果还有博客和一些 Github 上的项目,好感度++,但记得在去面试前收拾下 ...
- MySql下载安装(Mac平台) 终端启动 XMAPP启动
1,下载 2,点击MySQL Community Server之后,然后看到需要注册登录的节目,我们就点击最下面just start my download直接下载.懒的注册或者登陆: 3.下载后,& ...
- iOS本地数据存储(转载)
看到一篇不错的文章,推荐给大家!!! 应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文 ...
- SQL基础(1)-创建及修改表
1. 建表语句 CREATE TABLE fdh_client_info ( id varchar2(50) primary key, name varchar2(30) not null, sex ...
- Linux awk
一.简介 二.教程 1)过滤字符(对大小写很敏感) dir -l | awk '$3=="root" {print $1,$3,$4, $9;} ' cat tecmint_dea ...
- QQ一键登录功能的实现过程
QQ登录的思路: 当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断 if(已经有openId){ 跳转到登陆后的页面. }else if(没有openId){ ...
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...