如何将je malloc_stats_print写入文件?

时间:2013-08-14 17:44:32

标签: malloc

如何将je_malloc_stats_print()结果写入文件而不是stderr? 现在我能做的只是对stderr的je_malloc_stats_print(NULL,NULL,NULL);

2 个答案:

答案 0 :(得分:2)

第一个参数是回调函数指针,第二个参数用于将数据传递给回调。您可以使用这些参数来实现对文件的写入。来自jemalloc manual page

  

void malloc_stats_print(         void(* write_cb)(void *,const char *),         void * cbopaque,         const char * opts);

答案 1 :(得分:0)

/*Actually The default function, it uses inside print the stat data on STDERR output stream. To print it to a file, It needs to provide a callback function, which it will call to print the buf stream into. */

int g_fd;

void print_my_jemalloc_data(void *opaque, const char *buf);

int main()

{

  int fd = open("heap_stats.out,O_CREAT|O_WRONLY,0666);

  g_fd = fd;

  malloc_stats_print(print_my_jemalloc_data,NULL,NULL); 

  /*Passing my callback routine which jemalloc will use internally to print data into*/

return 0;

}

void print_my_jemalloc_data(void *opaque,const char *buf)
{
 write(g_fd,buf,strlen(buf));`enter code here`
}

您可以使用相同的签名替换您的函数,并在malloc_stat_print API处替换第一个参数回调函数。它将在buf上传递,您可以在之前打开的已定义文件流中打印它。