Linux应用学习
kindlyde
学习,学而习之。
展开
-
Linux应用程序地址布局
Linux应用程序在内存中的地址分布:代码段(正文段):CPU执行的机器指令部分。。通常为共享的,也是只读的,以防止程序由于意外而修改其指令。初始化数据段: 通常被称为数据段,它包含了程序中需明确赋初值的变量。未初始化数据段(bss段):意为由符号开始的块(block started by symbol),在程序开始之前,内核将此段中的数据初始化为0或空指针。。栈:自动原创 2015-01-17 16:54:15 · 1144 阅读 · 0 评论 -
GDB调试程序
GDB的三个功能:1、启动被调试的程序2、设置断点3、设置断点之后可以检查程序的状态1.编译生成可执行文件:(注意 -g 调试选项)gcc -g tst. c -o tst2.启动GDBgdb tst3. 在main函数处设置断点break main4. 运行程序run5. 利用 更加丰富的 gdb命令对程序进行调试。以下为gdb转载 2015-01-17 16:49:46 · 561 阅读 · 0 评论 -
动态链接库
回顾使用静态链接库与动态链接库的区别:制作动态链接库 1 . gcc –c mylib. c –o mylib.o2. gcc -shared -fPIC mylib. o -o libmylib. so3. 将制作好的libmylib. so 复制到 /usr/lib-fpic 使输出 的对象模块是按照可重定位地址方式生成的。-sh原创 2015-01-17 17:04:35 · 540 阅读 · 0 评论 -
进程控制理论知识
程序:静态的存储在计算机上,用适当形式描述的算法。。进程:一个具有一定独立功能的程序的一次运行的活动;是正在运行程序的一个抽象。进程的三个状态:1、运行态(该时刻进程实际占用CPU)2、就绪态(可运行,但因为其他进程正在运行而暂时停止)3、阻塞态(除非某种外部事件发生,否则进程不能运行)前两种逻辑上是相似的,两种进程都可以运行,,只是因为进程调度原因。。第3种是因为原创 2015-01-17 17:08:32 · 872 阅读 · 0 评论 -
coredump故障分析
coredump叫做核心转存。当程序在运行过程中发生异常,这时Linux系统会将程序出错时的内存内容存储在一个(core.进程号)的文件中,这个过程叫core dump。此功能默认关闭: 开启命令: ulimit -c unlimited(可使用的资源无限制) 关闭命令: ulimit -c 0 ;-c选项:当某些进程发生错误时,系统可能将该进程在内存的信息写成文件,这种文原创 2015-01-17 16:50:49 · 1242 阅读 · 0 评论 -
静态函数设计 ----- 系统调用与库函数的区别
Linux应用程序需要的外部函数主要由函数库和系统调用来提供。函数库又分为静态函数库和动态函数库,Linux应用程序使用的主要函数库均放于/lib,/usr/lib目录下;Linux下默认使用动态函数库静态函数库:*.a方式命名的库动态函数库:*.so.*方式命名的库RHEL默认不提供静态C函数库(libc.a)。这样的话在链接C的静态链接库或者程序在其他静态链接时用到C库原创 2015-01-17 17:01:24 · 700 阅读 · 0 评论 -
fork与vfork、exec与system
比较fork与vfork之间的区别:都为创建一个子进程,1、前者是将父进程的内存数据copy到子进程中,而后者则是共用父进程的内存数据2、vfork:创建过子进程之后,阻塞父进程,当子进程调用exit()或者exec()后父进程开始往下运行。。注:vfork返回只能调用exit而不能使用return,,因为子进程与父进程共享一片内存,子进程return之后,释放局部变量、弹出 栈,原创 2015-01-17 17:11:15 · 1103 阅读 · 0 评论