摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我以下图为基础,说明Linux的架构(architecture)。(该图参考《Advanced Programming in Unix Environment》) 最内层是硬件,最外 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内存空间传递信息。为了让 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们在这里讲解进程组和会话,以便 阅读全文
摘要:
Linux进程基础一文中已经提到,Linux以进程为单位来执行程序。我们可以将计算机看作一个大楼,内核(kernel)是大楼的管理员,进程是大楼的房客。每个进程拥有一个独立的房间(属于进程的内存空间),而每个房间都是不允许该进程之外的人进入。这样,每个进程都只专注于自己干的事情,而不考虑其他进程,同 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UN 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下从程序到进程的漫漫征程 阅读全文
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令 (instruction)。所谓的程序(program 阅读全文
摘要:
SHELL (BASH) $history -显示在当前shell下命令历史 $alias -显示所有的命令别称 $alias new_command='command' -将命令command别称为new_command $env -显示所有的环境变量 $export var=value -设置环 阅读全文
摘要:
命令行 gcc/g++ [options] [filenames] 编译流程 1.预处理-Pre-Processing 2.编译-Compiling 3.汇编-Assembling 4.链接-Linking //bin文件 参数 1.总体选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一 阅读全文
摘要:
参考 http://blog.jobbole.com/44932/ 阅读全文
摘要:
移动光标 退出 删除 修改 撤销 复制粘贴剪切 状态 查找 替换 执行外部命令 .vimrc http://blog.jobbole.com/112726/ 参考 http://blog.jobbole.com/112726/ 阅读全文
摘要:
C-h t教程 C-x C-c 退出emacs C-g 退出一个正在运行的命令 C-v 下一屏 M-v 上一屏 C-l 光标置于屏幕中央 C-p 上一行 C-b 左移 C-f 右移 C-n 下一行 M-f 右移一个词 M-b 左移一个词 C-a 行首 C-e 行尾 M-a 句首 M-e 句尾 M-< 阅读全文
摘要:
检测内存泄漏 保存为memleak.c并编译,然后用valgrind检测。 (valgrind和purify最大的不同在于:valgrind只接管程序执行的过程,编译时不需要valgrind干预,而purify会干预程序编译过程) 我们得到如下错误信息: 可以看到,如果我们仅仅用默认方式执行,val 阅读全文
摘要:
Valgrind包含的工具 Valgrind支持很多工具:memcheck,addrcheck,cachegrind,Massif,helgrind和Callgrind等。在运行Valgrind时,你必须指明想用的工具,如果省略工具名,默认运行memcheck。 Valgrind的使用 首先,在编译 阅读全文
摘要:
GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。产生程序运行时候的函数调用关系,包括调用次数,可以帮助程序员分析程序的运行流程。 1. 编译 g++/gcc 使用 -pg 选项编译和链接你的应用程序。在gcc/g++编译程序的时候,加上-pg选项 阅读全文
摘要:
Cppcheck是一个C/C++代码缺陷静态检查工具,不同于C/C++编译器及其它分析工具,只检查编译器检查不出来的bug,不检查语法错误,支持C/C++代码;作为编译器的一种补充检查,对产品的源代码执行严格的逻辑检查,执行的检查包括: 启用消息 默认情况下,只显示错误消息,可以通过 --enabl 阅读全文
摘要:
产生调试信息 g++/gcc: 使用-g选项 使用-O0选项去除优化 makefile 使用-g选项 使用-O0选项去除优化 CMakeLists.txt 添加SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") 总览 b — 阅读全文