C有没有像PHP ob_start的东西?
问题描述:
我有一个简单的网关监听器,它通过printf在屏幕输出处生成一个日志。我想记录它,以便我可以将它插入到一个MySQL表中。C有没有像PHP ob_start的东西?
printf("\nPacket received!! Decoding...");
我不知道是否有任何快速的方法做,这是C.
但如果是,我可以在同一时间获得两个输出?
感谢
答
我不知道,做输出缓冲中C.任何功能,但你可以很容易地模拟一个样:
char buffer[MAX_BUFFER_SIZE] = ""; // that buffers your output.
char temp[SOME_SUITABLE_MAX];
现在
每次你使用printf
,使用sprintf
作为如下:
sprintf(temp,"\nPacket received!! Decoding...");
和他们这个字符串添加到缓冲区
strcat(buffer,temp);
继续执行sprintf
然后strcat
对于每个要缓冲的消息,一旦完成,缓冲区将具有缓冲输出。
答
假设通过“记录”你的意思是你想写它到一个文件,那么是的,这很容易。 Unix有过tee
工具多年,将让你做这样的事情:
gateway_listener | tee record_file
如果你的系统不提供tee
默认情况下,它应该是很容易找到或编译运行一个:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
FILE *outfile;
int c;
if (argc < 2) {
fprintf(stderr, "Usage: tee <out_file>\n");
return EXIT_FAILURE;
}
if (NULL == (outfile = fopen(argv[1], "w"))) {
fprintf(stderr, "Unable to open '%s'\n", argv[1]);
return EXIT_FAILURE;
}
while (EOF != (c=getchar())) {
putc(c, outfile);
putchar(c);
}
fclose(outfile);
return 0;
}
+0
把输出重定向到一个文件似乎很简单,但我真正需要的是将输出保存到一个mysql表。感谢您的意见和我要照顾的自定义T恤:D – 2010-03-21 13:56:19
这正是我正在寻找的提供我将日志保存在MySQL数据库。谢谢:) – 2010-03-21 13:54:32