LinuxC/C++
文章平均质量分 65
千重浪_WaterStone
这个作者很懒,什么都没留下…
展开
-
system call, signal, exception in linux
System call and signal handler are running on behalf of the processThey are called soft exception or interrupt.Hard exception or interrupt runs on behalf of itself, without the context of proc转载 2013-09-30 14:13:12 · 1252 阅读 · 0 评论 -
GCC汇总
1.gcc -v -c test.c-v 显示编译过程 2.gcc搜索次序-I -L制定路径环境变量指定路径:C_INCLUDE_PATH,LIBRARY_PATH,LD_LIBRARY_PATH系统默认目录3.arar cr Libname.a 1.o 2.o lib文件生成ar t libname.a 查看lib文件中.o转载 2013-10-08 10:56:23 · 519 阅读 · 0 评论 -
C++ STL notes
exception safe, type safe, thread safe,reentrantItem1: Memory-contigious, node-based containerItem2: EncapsulationItem3: An easy way to make copying efficient, correct, and immune to the slici原创 2013-10-08 10:40:42 · 519 阅读 · 0 评论 -
pthread_create in class method
pthread_create can not use class normal methods directly, but can use static methods. Here is a example://g++ -o test test.c -lpthread#include #include using namespace std;class Testing{转载 2013-10-08 10:44:18 · 700 阅读 · 0 评论 -
memcpy和strncpy两个函数用法
strncpy 原型:extern char *strncpy(char *dest, char *src, int n);用法:#include 功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。说明: 如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。 如果src的长度小于n个字节,则以NULL填充dest直转载 2013-10-08 10:45:40 · 651 阅读 · 0 评论 -
GTK g_timeout_add function
It is very interesting for Gtk to set a timer to do some things by the gtk framework. Here is a paper on thishttp://caterpillar.onlyfun.net/Gossip/GTKGossip/TimeoutIdle.html.Besides, it is also in转载 2013-10-08 10:54:56 · 1888 阅读 · 0 评论 -
函数可重入性及编写规范
一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入 函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。转载 2013-10-08 10:38:33 · 750 阅读 · 0 评论 -
Implicitly sharing V.S explicitly sharing
Implicitly sharingCOW is used. Shallow copy takes place when copy construct a new object. Deep copy when writing takes place.Qpen.hvoid QPen::setWidth(int width){ if (width转载 2013-10-08 10:39:54 · 987 阅读 · 0 评论 -
Design patterns in C++
FactoryAbstractFactoryBuilderPrototypeSingletonAdapterBridgeCompositeDecoratorProxyTemplateMethodChainofResponsibilityFlyweightCommandObserverStrategyStateIteratorM原创 2013-10-08 10:42:05 · 595 阅读 · 0 评论 -
diff和patch使用指南
diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。 diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的patch文件,即补丁文件。 patch能将diff文件运用于 原来的两个集合之一,从而得到另一个集合。举个例子来说文件A和文件B,经过diff之后生成了补丁文件C,那么着个过程相当于 A转载 2013-10-08 10:43:01 · 539 阅读 · 0 评论 -
Code viewer hierarchy
Cited from http://barry-popy.blog.sohu.com/31629163.html用CodeViz产生函数调用图 恩,看Linux的内核时间也不算短了,可惜少有好的工具画调用图,还得自己脑子里记函数之间的关系,麻烦,手动画吧,也没合适的工具,画得不直观,现在终于有了一个好的工具--CodeViz[http://www.csn.ul.ie/~mel转载 2013-10-08 10:52:19 · 555 阅读 · 0 评论 -
调试makefile
一个调试makefile文件的简便方法:那就是用make -p|tee make.out来输出make运行过程中产生的中间信息。make -n 就可以输出调试make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几转载 2013-10-08 10:52:57 · 578 阅读 · 0 评论 -
Linux lib的使用
最土的办法解决libhal和libbus开发库没安装问题:(1)编译c文件,如果libhal.h文件找不到,直接copy过来(2)连接相应的库gcc -c monitor.cgcc -o monitor monitor.o /usr/lib/libhal.so.1.0.0 /usr/lib/libdbus-glib-1.so.2.1.0gcc -g -c monitor.c转载 2013-10-08 10:57:06 · 825 阅读 · 0 评论 -
GNU Compile :可执行文件, 静态链接库, 动态链接库
对于一个编译型语言,编译器工作时总要经过预处理、编译、链接等几个过程。以 C/C++ 为例:预处理器(cpp)将每个 .c/.cpp 文件中 #include 的头文件都合并到 .c/.cpp 文件中,并且对其进行宏扩展,由此生成数个编译单元。一般来说每个 .c/.cpp 文件对应一个编译单元。随后,编译器(cc)将每个编译单元翻译成本地二进制代码,在 GNU/Linux 中后缀是 .o,在 ms转载 2013-10-08 10:50:53 · 702 阅读 · 0 评论 -
RPM包rpmbuild SPEC文件深度说明
RPM包rpmbuild SPEC文件深度说明文章分类:操作系统 update log:2010.01.08 加入SPEC文件中的宏定义和变量2010.01.08 关键字说明,如何在升级过程中不覆盖配置文件 上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包。最后部分还看到.src.rpm的内容,实际上就是由.tar.gz源码、补丁软件和.转载 2013-10-08 10:47:44 · 846 阅读 · 0 评论 -
Linux下的多线程编程(pthread)
Linux下的多线程编程 本文出自:http://www.china-pub.com 作者: 姚继锋 (2001-08-11 09:05:00) 1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程转载 2013-10-08 10:45:04 · 587 阅读 · 0 评论 -
内核中文件、打印、网络操作
参考:printk信息打印到指定文件 终端 网络 http://bbs.chinaunix.net/thread-1945096-1-1.html内核模块中对文件的读写 http://bbs.chinaunix.net/thread-1945223-1-1.html内核socket编程UDP http://hi.baidu.com/zkheartboy/item/b8f5e5b7b6d转载 2013-09-30 14:09:14 · 618 阅读 · 0 评论 -
fork vs vfork
#include #include #include int glob=8;int main(void){ int var=8; pid_t pid; printf("Before vfork\n"); if((pid=fork()) { printf("Vfork error\n"); }原创 2013-09-30 14:11:36 · 597 阅读 · 0 评论 -
Linux zombie进程详细解析
Linux僵尸进程详细解析 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进 程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继转载 2013-09-30 14:14:36 · 9245 阅读 · 0 评论 -
Buffered I/O and non-buffered I/O
转自:http://ender.hitidea.org/tag/o_direct/参考文献部分的内容是非常好的。这个选项在测试时是非常有用的。实验需要对Flash Disk做无系统缓冲的I/O操作,顺便了解了一下Linux下的I/O.Linux上的块设备的操作可以分为两类:第一类是使用C标准库中的fopen/fread/fwrite 系列的函数,我们可以称其转载 2013-09-30 14:09:54 · 948 阅读 · 0 评论 -
LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
对动态链接库的概念其实还很模糊,自己的理解是:把一些常用的代码,如函数,类等,编译成一个"包"即DLL(WINDOWS下)或者SO(LINUX下)文件,然后供其它程序使用时直接调用里面封闭的函数即可,实现的代码的重用,也节省了硬盘空间(这点可能是次要的吧).在WIDOWS下利用VC++可方便的生成DLL,在LINUX下则需要通过各种编译命令来实现,对于像我这种菜鸟级程序员来说是个不转载 2013-09-30 14:10:40 · 660 阅读 · 0 评论 -
Linux thread communication and synchronization
1.Mutex2.Read-write locker3.Condition lock4.Semaphore5.pipe/fifo6.share memory7.Message queue5-7 seems not necessary.Reference:Linux下多线程编程-Pthread与Semaphore的使用http://www.jxva原创 2013-09-30 14:13:57 · 885 阅读 · 0 评论 -
通过一段汇编,加深对寄存器ESP和EBP的理解
http://blog.csdn.net/zsJum/article/details/6117043一直对寄存器ESP和EBP的概念总是有些混淆,查看定义ESP是栈顶指针,EBP是存取堆栈指针。还是不能很透彻理解。之后借于一段汇编代码,总算是对两者有个比较清晰的理解。下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码;假设执行函数前堆栈指针ES转载 2013-09-30 14:08:33 · 628 阅读 · 0 评论 -
linux/compile.h头文件说明
原文链接:http://www.hackline.net/a/special/linux/application/2010/0526/4093_2.html 所有的内核代码,基本都包含了linux\compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。 首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代转载 2013-09-30 14:12:29 · 950 阅读 · 0 评论 -
Linux系统和内核编程学习路线
系统编程学习路线 这里推荐几本书,关于学习Linux或其他Unix系统编程,按照由浅入深的顺序:1 入门篇《Linux程序设计》,英文名《 Beginning Linux Programming 》最新版是第四版,但是中文版只有第三版:http://www.china-pub.com/33907这里提供第四版英文原版下载: begin_linux_progr转载 2013-09-30 14:15:12 · 893 阅读 · 0 评论 -
讲讲volatile的作用
Cited from http://blog.21ic.com/user1/2949/archives/2007/35599.html一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:转载 2013-10-08 10:40:42 · 478 阅读 · 0 评论 -
QT信号机制
Qt用预编译器和宏来保证强大的跨平台能力,信号机制则是其中最精妙之处。本文分析了几种常见的信号处理机制,然后详细介绍了Qt的Signal/Slot机制。 关键词:信号机制Signal/Slot Win32 MFC Linux Qt 首先要说明,这里所说的信号不是Unix中进程间通信的信号。这里的信号更多地与图形界面的输入输出联系在一起(当然也可以是不可见的操作)。自从计算机程序从字符界转载 2013-10-08 10:49:15 · 873 阅读 · 0 评论 -
glibc编译和调试
1. SELS 11.1glibc-2.9-2.8.src.rpmlibsepol-devel-2.0.32-5.38.i586.rpmlibselinux-devel-2.0.71-3.38.i586.rpm2.安装libsepol-devel,libselinux-devel 和glibc-2.9-2.8.src.rpm3.rpmbuild -bb gl转载 2013-10-08 10:45:01 · 1740 阅读 · 0 评论