Linux 打印简单日志(一)
简单日志输出:
#include<stdio.h>
#include<string.h>
#include<stdlib.h> void write(char* filename,char* szStr){
FILE* fp;
fp = fopen(filename,"at+");
if(fp != NULL){
fwrite(szStr,,,fp); //
fclose(fp);
fp = NULL;
}
} int main(int argc, char** argv){
int i;
for(i = ; i < argc; i++){
write("log.txt",argv[i]);
}
return ;
}
Attention:
fwrite(szStr,256,1,fp); // fwrite(szStr,strlen(szStr),1,fp);
日志会出现乱码的情况
fopen()函数:
函数声明:include<stdio.h>
函数原型:FILE *fopen(const char *filename, const char *mode);
函数参数:filename:log文件名 mode:文件访问模式
函数功能:按照给的的模式mode打开filename所指向的文件
函数返回值:文件顺利打开后,指向改流的文件指针就会被返回。如果文件打开失败,就返回NULL,并把错误代码存储在error中。
参数说明:
mode有几种形态的字符串:
|
r |
以只读的方式打开文件,文件必须存在 |
|
r+ |
以读/写的方式打开文件,文件必须存在 |
|
rb+ |
以读/写的方式打开一个二进制文件,只允许读写数据 |
|
rt+ |
以读/写方式打开一个文本文件,允许读和写 |
|
w |
打开只读文件,若文件存在则文件长度清零,即文件内容会消失;若文件不存在,则创建该文件 |
|
a |
以附加的方式打开只写文件,若文件不存在,则创建该文件,若文件存在,将写入的数据加在文件的末尾 |
|
a+ |
以附加的方式打开读/写文件,若文件不存在,则创建该文件,若文件存在,将写入的数据加在文件的末尾 |
|
wb |
以只写的方式打开或新建一个二进制文件,只允许写数据 |
|
wb+ |
以只写的方式打开或新建一个二进制文件,允许读和写 |
|
wt+ |
以读/写的方式打开一个文本文件,允许读和写 |
|
at+ |
以读/写方式打开一个文本文件,允许读或在文本末追加数据 |
|
ab+ |
以读/写的方式打开一个二进制文件,允许读或者在文件末尾追加数据 |
补充:
1.以x结尾的模式为独占模式,文件已存在或无法创建(一般为路径文件问题)导致fopen打开失败。文件以操作系统支持的独占模式打开。
2.上述的形态字符串都可以再加一个b字符,如rb/w+b/ab+等,加入b字符来告诉函数库以二进制打开文件。如果没有b,则默认加t,即以文本模式打开文件。
3.二进制和文本模式区别:
在windows系统中,文本模式下:文件以“\n\r”代表换行。若以文本模式打开文件,并用fputs等函数写入换行符“\n”时,函数会自动在“\n”前面加“\r”。即实际写入文件的时“\r\n”。
在unix/linux系统中,文本模式下“\n”代表换行,linux系统下文本和二进制模式下无区别。
总结:
- 是否是二进制打开,加b
- 读写方式:只读、只写、读写、追加只写、追加读写。
- 读文件是否必须存在,以及存在时是清空还是追加不同的响应。
fwrite()函数:
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
函数参数:
ptr: 指向要被写入的元素数组的指针。
size: 要被写入的每个元素的大小,单位字节
nmemb: 元素的个数,每个元素大小为size字节
stream: 这是指向FILE对象的指针,该FILE对象指定了一个输出流。
函数功能:把ptr所指向的数组中的数据写入到指定的stream中。
返回值: 如果成功,返回一个size_t的对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与nmemb参数不同,则会出现一个错误。
Linux 打印简单日志(一)的更多相关文章
- Linux 打印可变参数日志
实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...
- Linux学习之日志管理(二十一)
Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...
- 就linux三剑客简单归纳
就linux三剑客简单归纳: :awk 习题1:用 awk 中查看服务器连接状态并汇总 netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a, ...
- Linux进阶之日志管理
一.何为日志 1.在程序执行时,可以通过标准输出以及错误输出,让我们知道程序的执行情况,而系统不可能将所有程序的输出信息一起显示,要知道后台执行的程序非常之多,如果一起显示,那我们不用操作了,整天只看 ...
- 【阿里云产品公测】简单日志服务SLS使用评测 + 教程
[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...
- Linux下重要日志文件及查看方式
http://os.51cto.com/art/201108/282184_all.htm 1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...
- Linux操作系统log日志日志分别指什么
Linux操作系统log日志日志分别指什么 2019-04-20 20:41:05 一.一般的日志 /var/log/messages —包括整体系统信息,其中也包含系统启动期间的日志.此外,m ...
- linux下syslog-ng日志集中管理服务部署记录
syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
随机推荐
- Oracle集群检测命令
select inst_id, count(inst_id) from gv$session group by inst_id order by inst_id; srvctl stop databa ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- python基础_面向对象
面向对象定义 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance) ...
- 解决Sublime Text3中文符号以及中文显示乱码问题
今天安装了sublime Text3,发现中文符号显示是乱码,刚开始以为是编码问题,经过各种尝试,终于找到了解决办法.解决方法如下: 一.安装包管理器 使用Ctrl+~快捷键或者通过View-> ...
- EM 算法(二)-KMeans
KMeans 算法太过简单,不再赘述 本文尝试用 EM 算法解释 KMeans,而事实上 KMeans 算是 EM 的一个特例 EM 算法是包含隐变量的参数估计模型,那对应到 KMeans 上,隐变量 ...
- nginx配置一般优化参数
#user nobody; worker_processes 2; # CPU亲和力,worker_processes最多开启8个,注意写法 worker_cpu_affinity 01 10; wo ...
- WPF ListView多行显示
//前台 <ListView Margin="14,152,12,74" Name="lvList" SelectionMode="Multip ...
- TVM:一个端到端的用于开发深度学习负载以适应多种硬件平台的IR栈
TVM:一个端到端的用于开发深度学习负载以适应多种硬件平台的IR栈 本文对TVM的论文进行了翻译整理 深度学习如今无处不在且必不可少.这次创新部分得益于可扩展的深度学习系统,比如 TensorFlo ...
- python学习-Python简介以及运行环境
Python语言是全世界几百种编程语言中的一个,诞生时间不算长,但是现在已经成为很热门的语言,近几年在TIOBE排行榜一直呈现上升趋势,截止19年2月,python已经超过C++成为排名第三的语言. ...
- zencart网站上线前,邮件模板默认网址修改
涉及到的文件 includes\languages\语言包\模板\email_extras.php 后台\includes\languages\语言包\email_extras.php 后台\incl ...