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等).日志内容筛选.定义日志格式模板等.目 ...
随机推荐
- Eclipse编写代码时代码自动补全 + 防止按空格自动补全
都知道Eclipse中的自动补全代码是一个非常好用的工具 如下: 1.Windows——>Preferences——>Java–>Editor–>点击Content Asist ...
- 十进制快速幂(牛客多校第五场)-- generator 1
思路: 十进制快速幂. #include <stdio.h>//sprintf #include <cstdlib>////malloc exit strcat itoa sy ...
- AppCan IDE中有时格式化代码后,代码就运行不了了。
AppCan IDE中有时格式化代码后,代码就运行不了了.
- python并发编程-进程间通信-Queue队列使用-生产者消费者模型-线程理论-创建及对象属性方法-线程互斥锁-守护线程-02
目录 进程补充 进程通信前言 Queue队列的基本使用 通过Queue队列实现进程间通信(IPC机制) 生产者消费者模型 以做包子买包子为例实现当包子卖完了停止消费行为 线程 什么是线程 为什么要有线 ...
- 一些通用的js工具类,添加自定义插件
common_t.js /** * 通用工具组件 对原有的工具进行封装,自定义某方法统一处理<br> * ^_^ * * Author: em.D * Date: 2016-05-17 * ...
- 最长上升子序列(Longest increasing subsequence)
问题描述 对于一串数A={a1a2a3…an},它的子序列为S={s1s2s3…sn},满足{s1<s2<s3<…<sm}.求A的最长子序列的长度. 动态规划法 ...
- 微信小程序使用页面栈改变上一页面的数据
微信小程序中如果从一个页面中进入下一个页面,如果下个页面的数据有删除或者增加再返回上一个页面的时候,就会导致页面不刷新(数据加载函数在onload中),从而造成数据不一致的情况.其实在微信小程序中是可 ...
- java各种jar的下载地址和源码下载地址
1.jboss http://jbossmarshalling.jboss.org/downloads2.netty https://netty.io/downloads.html3.spring h ...
- Zookeeper VS Chubby
目录 区别的根源 1)一致性 2)Client Cache vs No Cache 总结 参考资料 区别的根源 一个设计良好的系统应该是围绕并为其设计目标服务的. Chubby:p ...
- 关于不同retina的布局
不同retina,显示高度不一样,很显然最细的线条最美 <!DOCTYPE html> <html lang="en"> <head> < ...