我有一個簡單的網關監聽器,它通過printf在屏幕輸出處生成一個日誌。我想記錄它,以便我可以將它插入到一個MySQL表中。C有沒有像PHP ob_start的東西?
printf("\nPacket received!! Decoding...");
我不知道是否有任何快速的方法做,這是C.
但如果是,我可以在同一時間獲得兩個輸出?
感謝
我有一個簡單的網關監聽器,它通過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;
}
把輸出重定向到一個文件似乎很簡單,但我真正需要的是將輸出保存到一個mysql表。感謝您的意見和我要照顧的自定義T恤:D – 2010-03-21 13:56:19
這正是我正在尋找的提供我將日誌保存在MySQL數據庫。謝謝:) – 2010-03-21 13:54:32