
linux 应用开发
文章平均质量分 65
全栈无侠
我很好
展开
-
linux 0.11 进程调度, 硬件基础 GDT IDT
根据赵博的完全注释写的。个人认为看进程调度,必须知道一点x86的知识。希望下面的东西有用。文笔不好乱写的。有空一起钻研。基础知识系统地址寄存器:系统寄存器时用来管理在保护模式下使用系统表。用于内存的系统表有全局描述符(GDT),局部表述表(LDT),中断描述表(IDT)。系统寄存器(在本章中如无特殊说明系统寄存器只包含用于内存管理的系统寄存器)有全局描述符表寄存器(GDTR),原创 2005-01-20 23:58:00 · 4499 阅读 · 2 评论 -
ubuntu man手册不全
<br /> 用man查看pthread相关函数时,发现这些函数都没有。 原来Ubuntu没有安装全man手册<br />apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix<br /> <br />manpagesmanpages-devlibstdc++6-4.2-docmanpages-posixmanpages-posix-dev原创 2010-06-28 21:01:00 · 2566 阅读 · 0 评论 -
GDB多线程调试
由于项目比较复杂,一个后台程序,一起来就会有10个线程,在运行过程中还会create新的线程,而且还有很多实时信号来不断的骚扰。现在简单总结如下:进入gdb后设置: //作用是禁止gdb处理某种信号。因为当程序收到信号时,gdb就会被中断,所以为了避免被消耗感染必须禁止。handle SIG127 nostop noprint pass //让gdb对新创建的线程有效原创 2010-01-14 15:35:00 · 11802 阅读 · 1 评论 -
Linux signal函数解析
以下在centos5.3上实验。在linux中signal函数是通过调用sigaction来实现的,由此它不存在信号丢失以及每次信号处理后会把信号处理改成默认处理方式。但对于系统调用函数被信号打断时,系统调用是否会自动启动好像没怎么说明。不过可以自己动手看一下: signal(SIGTERM, term_handler); sigaction(SIGTERM, NULL原创 2009-09-24 14:05:00 · 1624 阅读 · 0 评论 -
Linux无法产生core dump的原因
首先是你可能没有设置 ulimit -c unlimited,一般情况下core dump文件的大小为0,所以无法产生。还有几种原因无法产生core dump,第一你没有权限去写那个目录,第二 设置了用户ID,但你又不是这个可执行文件的所有者,第三设置了组ID,但你不是可执行文件的所属的组。原创 2009-09-21 12:59:00 · 3003 阅读 · 0 评论 -
autoconf automake configure自动生成makefile
还有一本书,等等传上来。看下面几个链接应该基本够用了 http://www.ibm.com/developerworks/cn/linux/l-makefile/http://blog.youkuaiyun.com/absurd/archive/2006/06/12/792397.aspxhttp://book.51cto.com/art/200811/97013.htm原创 2009-02-06 15:26:00 · 819 阅读 · 0 评论 -
google test 入门介绍
在google上下载源代码包解压以后,在linux需要 configure; make ; make install; 默认会把头文件和库文件放到/usr/local目录下去,你可以在 configure的时候加上 --prefix=target_dir. google test把单元测试代码分成三个概念, 第一test,每个断言 assertion都称为test。第二te原创 2009-02-09 13:28:00 · 1516 阅读 · 0 评论 -
linux shell scripts
命令替换和输出捕获 `command` $(command), $()是posix shell的标准, `command`是bash shell的标准。hard quote 单引号中的所有字符都不被shell解析, soft quote 双引号,部分字符还是会被shell解析(如$), escape / 紧接在反斜线后面的字符是不被shell解析。 fork原创 2009-01-10 21:52:00 · 880 阅读 · 0 评论 -
如何动态加载c++函数和类
当我们动态load .so库后,用dlsym通过函数名来得到改函数的地址。在C语言中,你原代码中的函数名称和共享库(.so)的文件名是一致的,能用dlsym来正确获得。但c++由于要支持重载的原因,编译器会根据自己的算法来修改源代码中的函数名。比如 foo(int,char),最后共享库中的函数名很可能是 foo_int_char而不再是foo了。关键是c++标准并未制定如何对c++的原创 2008-11-06 20:16:00 · 4524 阅读 · 0 评论 -
如何在redhat enterprise linux中运行eclipse
由于eclipse 基于商业的库和jvm,所以gij gcj对它没有支持。运行时会出现ava.lang.NoClassDefFoundError: .home.Desktop.eclipse.plugins.org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar at gnu.gcj.runtime.FirstThread.run()原创 2008-10-06 12:53:00 · 981 阅读 · 0 评论 -
gdb入门知识
gdb的使用除了manual外,自带的帮助也是非常有用的。在debug过程中你可以输入help来查看gdb支持的调试命令。List of classes of commands:aliases -- Aliases of other commandsbreakpoints -- Making program stop at certain pointsdata -- Exami原创 2008-10-21 10:50:00 · 5873 阅读 · 0 评论 -
centos yum 包管理
一般商业的包是无法通过yum做自动更新的。 yum install gcc yum install gdb yum install ctags yum install cscope yum install gcc-c++ "g++的包名称为gcc-c++而不是g++原创 2008-10-19 12:28:00 · 1001 阅读 · 0 评论 -
linux基础知识集锦
1.该文讲述了linux平台下库的类型,包括静态库,动态链接库以及动态装载库。要对这个有深入了解可以参看link and loader这本书。linux下库和可执行文件为ELF格式,windows下PE格式。动态链接linux的实现和windows有所不同。http://www.ibm.com/developerworks/linux/library/l-dynamic-libraries/in原创 2008-10-20 11:15:00 · 774 阅读 · 0 评论 -
多核编程资料
Lock-Free Data structure 清楚的阐述了无锁编程的基本概念A Pragmatic Implementation of Non-Blocking Linked-Lists Timothy L. Harris的关于以两阶段方式实现单链表的无锁编程,很多方法都是在它的基础上改进javaCAS的实现 http://www.ibm.com/developerworks/cn/jav原创 2008-07-31 16:41:00 · 1375 阅读 · 0 评论 -
底层开发应注意的若干问题
1.写驱动时候底层时一定要注意compiler对你代码的优化,因为一般底层代码对写内存外围设备都有先后次序的要求。如果compiler对你某一条读写指令提前了,那会发生让你捉摸不透的错误。 2.对于内存拷贝,尽量按机器字长来拷贝。 3.并发程序切勿在 event函数中调用系统函数。因为很多系统函数内部都有锁,这及有可能导致死锁。比如在malloc过程中,收到signal,在signal处理函原创 2008-07-23 15:22:00 · 653 阅读 · 0 评论 -
http://www.tbdata.org/archives/878
C++多重继承及虚继承中对象内存的分布http://www.tbdata.org/archives/878转载 2011-10-03 12:59:32 · 1298 阅读 · 0 评论