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对于每个要缓冲的消息,一旦完成,缓冲区将具有缓冲输出。

+0

这正是我正在寻找的提供我将日志保存在MySQL数据库。谢谢:) – 2010-03-21 13:54:32

假设通过“记录”你的意思是你想写它到一个文件,那么是的,这很容易。 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