UNIX/Linux环境高级编程
文章平均质量分 75
szwm1010
正常下班像做贼
展开
-
gdb用法(一)基本 gdb 命令
GDB 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程式调试工具。或许,各位比较喜欢那种图像界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图像化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动你的程式,能按照你的自定义的需求随心所欲原创 2011-05-31 14:27:00 · 4539 阅读 · 0 评论 -
epoll学习,epoll与select,pool区别
在linux网络编程中,很长的时间都是用select来做事件触发.在linux新内核中,有了一种替换它的机制,就是epoll.相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率.因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数据数据越多,自然耗时就越多.epoll的接口三个函数1) int epoll_create(int size)原创 2012-07-03 16:07:44 · 3439 阅读 · 0 评论 -
常见的LINUX发行版安装libiconv库方法
今天编译程序,发现程序报错,如下cannot find -liconv collect2: ld returned 1 exit status或者undefined reference to `libiconv_open' collect2: ld returned 1 exit status是因为没有安装liconv包 iconv命令是用来转换文件的编码方式的原创 2012-04-12 17:47:25 · 24032 阅读 · 0 评论 -
多进程,多线程总结
多进程,多线程总结1)进程同步有:信号signal,无名管道,有名管道,消息队列,信号量,共享内存,socket,文件等线程同步有:线程数据(pthread_key_t),互斥锁(mutex),条件变量,信号灯,pthread_join.进程间通信(System V)管道,消息队列,信号量,共享内存1.管道:无名管道应用于父子进程间.有名管道以文件的形式原创 2012-07-04 16:23:50 · 1202 阅读 · 0 评论 -
GNU make 学习总结
个人写了一个简单的makefile通用模板,编译CPP或者C程序,见下一篇日志。http://blog.csdn.net/felixit0120/article/details/7663756 GNU make学习总结: 1.$(patsubst PATTERN,REPLACEMENT,TEXT)函数功能:搜索"TEXT"中以空格分开的单词,将符合模式PATTERN替换为REP原创 2012-06-13 15:47:10 · 1273 阅读 · 0 评论 -
makefile通用模版 示例
#*******************************************************************************# File name : Makefile# Author : weiming # Date : 2012/06/14# cmd : make#***************原创 2012-06-14 16:56:46 · 771 阅读 · 0 评论 -
Linux下动态库(.so)和静态库(.a)
linux下有两种库:动态库和静态库(共享库)二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。动态库(共享库)的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,因此代码体积比较小。不同的应用程序如果调用相同的库,那么在内存中只需要有一份该动态库(共享库)的实例。静态库和动态库的最大区别,静态情况下,把库直接加载到程原创 2012-06-11 17:28:25 · 17464 阅读 · 3 评论 -
【学习笔记】文件系统结构 二
4.2 磁盘文件的存储UNIX文件系统的存储通过目录和文件系统结构共同完成,其中前者存储了文件的层次结构,后者存储了文件的位置与内容。 1目录文件在UNIX中,目录是一种特殊的文件,它的内容是一系列的目录项,每个目录项由该目录下的一个文件名及此文件占用的i节点编号两部分组成。可以通过”ls –ai”命令查看各目录项内容。目录搭建了一个树状文件结构体系,并且记录了文件名称原创 2010-09-27 22:18:00 · 703 阅读 · 0 评论 -
gdb用法(二) 在Linux下产生并调试core文件
分析核心(core)文件 在程序发生崩溃时,有时可能无法直接运行GDB来进行调试。比如程序可能是在另外一台机器上运行的,或者因为程序对时间比较敏感,所以手动跟踪调试会产生无法接受的延迟等。遇到这些情况,就只能等到程序运行结束后才能判断崩溃的原因了。这时需要用到Linux提供的core dump机制。当程序中出现内存操作错误时,会发生崩溃并产生核心文件。使用GDB可以对产生的核心文件进原创 2011-05-31 14:33:00 · 2428 阅读 · 0 评论 -
gdb用法(三) 调试其他正在运行的进程
有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序并查看其状态,之后还能让这个程序正常地继续执行。 GDB提供了两种方式来调试正在运行的进程:一种是在GD原创 2011-05-31 17:33:00 · 1151 阅读 · 0 评论 -
Linux 多线程编程(Pthread 库)学习笔记 三
线程的数据处理 之 互斥锁互斥锁互斥锁用来保证一段时间内只有一个线程在执行一段代码pthread_mutex_lock声明开始用互斥锁上锁,此后的代码直至调用pthread_mutex_unlock为止,均被上锁,即同一时间只能被一个线程调用执行。当一个线程执行到pthread_mutex_lock处时,如果该锁此时被另一个线程使用,那此线程被阻塞,即程序将等待到另一个线程释放此互原创 2011-07-18 11:20:49 · 918 阅读 · 0 评论 -
UNIX下进程学习之管道和消息队列
linux多进程僵尸进程是已经终止,但没有从进程表中清除的进程。如果子进程先于父进程终止,而父经常没有调用wait接收子进程的信息,则子进程将转化为僵尸进程,直到父进程结束。避免僵尸进程方法1) wait 父进程主动调用wait(或收到信号后调用)接收子进程的死亡报告,释放子进程占用的系统进程表资源.2) 托管法 父进程先于子进程死亡,则它的所有子进程转而由init原创 2012-06-20 16:37:40 · 1121 阅读 · 0 评论