优麒麟linux和红旗linux怎么写c语

linux 下 C 语言实现写日志
在我写了如何在windows下通过QT debug重映射实现写日志,现在介绍如何在linux下写日志,以及如何查看日志。
先上程序,该程序经过测试能够很好的实现写日志要求
#include &stdio.h&
#include &sys/types.h&
#include &unistd.h&
#include &stdlib.h&
#include &string.h&
#include &errno.h&
#include &stdarg.h&
#include &time.h&
#include &pthread.h&
int safe_asprintf(char **strp, const char *fmt, ...);
int safe_vasprintf(char **strp, const char *fmt, va_list ap);
void plog(const char *format, ...) ;
void pinfo(const char *format, ...) ;
#define DEBUG
#ifdef DEBUG
void plog(const char *format, ...);
void pinfo(const char *format, ...);
#define debug(fmt, args...) plog(fmt, ##args)
#define debug(fmt, args...) do{}while(0)
static pthread_mutex_t fileMutex = PTHREAD_MUTEX_INITIALIZER;
int main(int argc, char *argv)
int safe_asprintf(char **strp, const char *fmt, ...)
va_start(ap, fmt);
retval = safe_vasprintf(strp, fmt, ap);
va_end(ap);
int safe_vasprintf(char **strp, const char *fmt, va_list ap)
retval = vasprintf(strp, fmt, ap);
if (retval == -1)
printf("Failed to vasprintf: %s.
Bailing out\n", strerror(errno));
void plog(const char *format, ...)
pthread_mutex_lock(&fileMutex);
FILE *fp = NULL;
char *fmt = NULL;
if (!(fp = fopen("log.txt", "a+"))) {
pthread_mutex_unlock(&fileMutex);
va_start(vlist, format);
safe_vasprintf(&fmt, format, vlist);
va_end(vlist);
if (!fmt) {
pthread_mutex_unlock(&fileMutex);
struct tm *ptm = NULL;
time(&timep);
ptm = localtime(&timep);
fprintf(fp, "[%04d-%02d-%02d-%02d-%02d-%02d] %s",
ptm-&tm_year + 1900,
ptm-&tm_mon + 1,
ptm-&tm_mday,
ptm-&tm_hour,
ptm-&tm_min,
ptm-&tm_sec,
free(fmt);
fsync(fileno(fp));
fclose(fp);
pthread_mutex_unlock(&fileMutex);
void pinfo(const char *format, ...)
pthread_mutex_lock(&fileMutex);
FILE *fp = NULL;
char *fmt = NULL;
if (!(fp = fopen("log.txt", "a+"))) {
pthread_mutex_unlock(&fileMutex);
va_start(vlist, format);
safe_vasprintf(&fmt, format, vlist);
va_end(vlist);
if (!fmt) {
pthread_mutex_unlock(&fileMutex);
fprintf(fp, "%s", fmt);
free(fmt);
fsync(fileno(fp));
fclose(fp);
pthread_mutex_unlock(&fileMutex);
程序实现的日志格式为:
时间 + 空格
+ 具体实现(自己的调试内容)
本段程序值得学习的地方:
va_list 结构体的使用
linux 的格式化输出字符串
文件操作过程中pthread_mutex锁的使用,以及他的优点
linux DEBUG 的应用,方便调试
linux如何查看日志:
使用tail 命令可以实现日志的查询,以及其他功能,不了解的话,自行查资料解决。
对上面应用不明白的请自行查资料解决。
没有更多推荐了,【图文】Linux 环境下的C语言编程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Linux 环境下的C语言编程
阅读已结束,下载本文到电脑
想免费下载本文?
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢希望为编程资料缺失的部分贡献自己的微薄之力……
【Linux】在Ubuntu12.04中写C语言与Helloworld
Ubuntu12.04自带C的环境,比Windows开发一个C爽多了,此C就是大名鼎鼎学计算机都要学的C语言。
尤其当年的C语言,下个VC6蛋疼的要死,然后又卡卡的,提示的错误又是英文的,非常不爽。
在Ubuntu写C的流程是这样的。
1、按Ctrl+Alt+T开终端,输入:
gedit helloworld.c新建一个.c文件。
2、之后直接打开一个记事本界面让你写。就一个NotePad一样,关键字高亮,比那VC6的界面爽多,又没有Visual Studio卡。
直接输入如下C语言的Helloworld。这个Helloworld不用讲了吧……据说文科计算机的那群亲们,都懂。
#include&stdio.h&
void main(){
printf("hello world\n");
这里插一句,今天心情好,不要跟我讨论主函数int main()与void main()的问题,OK?
3、然后保存退出,回到终端继续输入,就能够看到Helloworld的输出了。
gcc helloworld.c -o helloworld
./helloworld如下图所示:
上述的第一句是把helloworld.c编译成一个在Linux中的helloworld可执行程序。
第二句是运行helloworld这个可执行文件。
4、来到这里就写完helloworld这个程序了。据说美国搞计算机的高校,必须指定这样写C,用VC6会被人鄙视。
其实你的helloworld.c与helloworld可执行程序,都处于你的主文件夹中,也就是/pc/home/里面,其中pc是用户名。
没有更多推荐了,linux运行C语言命令_百度知道
linux运行C语言命令
linux下我把C语言程序编辑成功了,但是我咋样才能把编辑结果输出啊?为什么用gcc -o不行啊?知道的告诉我,谢谢拉....
我有更好的答案
Linux 自带gcc,使用命令:gcc&-o&target&source.ctarget 为目标文件名, 如果没有,则默认为 a.out &运行如下:./target
采纳率:57%
来自团队:
目的文件名
源文件名编译成功后,在提示符下:./目的文件名就可以运行刚编译好的程序了。
本回答被提问者采纳
gcc -o 文件名 编译文件
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。实验四 Linux下的C语言编程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验四 Linux下的C语言编程
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 麒麟linux 的文章

 

随机推荐