发布时间:2012-12-25 15:10:29
作为一个共享库,应该需要统计使用本库的各种应用程序的使用频率,使用方法等信息。才能针对主要应用做出更好的改进。 那么就需要记录调用者的进程id或者进程名称,并且保存下来。 保存的动作可以采用共享内存,也可以采用文件,这个在下篇博文描述,本文描述如何获取进程id和进程名称。 范例: 点击(此处)折叠或打开 #include <stdio.h> #include <unistd.h> #define CFGMNG_TASK_NAME_LEN 256 int main() { in......【阅读全文】
发布时间:2012-12-25 14:43:42
不多说,见如下文件。 点击(此处)折叠或打开 backtrace.c: #include <execinfo.h> #include <stdio.h> #include <stdlib.h> #define BT_MAX_TRACE 100 void print_trace (void) { void *array[BT_MAX_TRACE]; size_t size; &......【阅读全文】
发布时间:2012-12-25 14:39:48
linux共享库实现互斥 概述 Sqlite3数据库互斥是基于文件的,即一个数据库文件中如果包含多张表T1、T2...Tn,当有进程对其中的表Tx进行写操作时,其余试图读写Tn的操作都会立即返回IS_LOCK,导致写数据库失败。因此,Sqlite3经常用于嵌入式开发中对并发要求不高的场景。 悲剧的是现有的系统用的是Sqlite3,但却要求较高的并发度。 于是一个选择被提上议程:更换数据库 or 修改现有sqlite3的行为? 长远来看,更换数据库方为解决之道,但目前来说修改现有sqlite3的行为投入较少,先解燃眉之急。 修订方案 将sq......【阅读全文】
发布时间:2012-12-25 14:20:39
Valgrind的官网上明确说明该工具在64位机上尚不能使用。 怀着惴惴的心情试了一把memwatch,庆幸在64位机上正常使用。 =========================================================================== 以下是在linux虚拟机下的实验内容。 到http://www.linkdata.se/sourcecode/memwatch/下载最新版本的memwatch源码。 源码下载解压后要稍微做点修改才能编译,也可以到本文的附件区中下载,可以直接使用。 ......【阅读全文】