【02】Linux
文章平均质量分 70
_小青年儿_
优秀是一种习惯
展开
-
Linux网络管理常用命令
netstat netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,在我的计算机上执行netstat后,其输出结果为:Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address St原创 2012-04-07 13:57:08 · 2482 阅读 · 1 评论 -
thread 泄露问题
解决了一个隐蔽的内存泄漏——pthread_create后没有pthread_join导致内存持续增长昨天解决了一个隐蔽的内存泄漏问题,原因是pthread_create后的僵死线程没有释放导致的内存持续增长。现象是这样的:短时间内程序运行正常,但跑了12小时左右,用top查看其内存占用居然高达2G,于是马上意识到有内存泄漏。最先想到的是malloc/free、new/原创 2013-08-09 20:59:44 · 1027 阅读 · 0 评论 -
多线程编程的一些注意事项
提起Linux下的多线程编程,互联网上流传着的最好资料应该就是IBM开发者网站上连载的POSIX编程指南系列,其讲解也可谓深入浅出,对Linux具体实现的细节也有较为详细的解读,强烈推荐初、高级用户慢慢把玩,仔细体会。正如ESR所提到的那样,在UNIX类操作系统上利用POSIX线程库进行多线程编程是一件非常有挑战性的工作,太多的细节纠缠在一起,真的是扯不断、理还乱,稍有不甚,就可能陷入泥沼原创 2013-08-10 20:05:25 · 1882 阅读 · 0 评论 -
主线程与子线程之间退出关系
我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。 1、 主线程等待新线程先结束退出,主线程后退出。正常执行。实例代码:[cpp] view plaincopyprint?#include "apue.h" #include pthread_原创 2013-08-09 22:05:48 · 3847 阅读 · 0 评论 -
Posix线程编程指南
线程创建1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器原创 2013-08-10 20:37:07 · 980 阅读 · 1 评论 -
Linux下通用线程池的构建
本文源代码请到http://asp.6to23.com/vcprogram/source/sourcefile/linuxpool.rar 下载Linux下通用线程池的创建与使用本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示原创 2013-08-10 20:41:55 · 798 阅读 · 0 评论 -
线程专有数据(Thread-Specific Data)
Unlike processes, all threads in a single program share the same address space.Thismeans that if one thread modifies a location in memory (for instance, a global vari-able),the change is visible原创 2013-09-22 20:28:39 · 1142 阅读 · 0 评论 -
linux用户态与内核态通信netlink
1 引言Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管原创 2013-12-11 21:55:54 · 2045 阅读 · 0 评论 -
KDB使用
安装新内核后,使用新内核重新启动机器,现在,内核已经有kdb支持了。那么如何进入调试环境呢?如果在配置内核 时,没有选择kdb-off by default,那么在内核启动后,按下“pause”键即可进入kdb调试环境。如果在配置内核时选择了kdb-off by default,那么有两种办法:一种是在启动时加入“kdb=on”,另一种方式是在proc文件系统加载后,输入如下命令: #e原创 2013-12-11 21:25:37 · 2616 阅读 · 0 评论 -
KDB使用指南
kdb是一个Linux系统的内核调试器,它是由SGI公司开发的遵循GPL许可证的开放源码调试工具。kdb嵌入在Linux内核中,为内核程序员提供调试手段。它适合于调试内核空间的程序代码,譬如进行设备驱动程序调试,内核模块的调试等。目前kdb支持包括x86(IA32)、IA64和MIPS在内的体系结构。安装kdb官方发布的Linux内核并不包含kdb。kdb是一个内核源程序的补充。k原创 2013-12-11 21:42:14 · 4236 阅读 · 0 评论 -
虚拟机的网络连接方式
虚拟机常用的几种网络连接方式分别为Bridge模式、NAT模式、Host-Only模式 Bridge模式(桥模式) 这种模式是在新建虚拟机的时候默认选择的,是将虚拟主机的虚拟网卡桥接到一个Host主机的物理网卡上面,实际上是将Host主机的物理网卡设置为混杂模 式,从而达到侦听多个IP的能力。在这种模式下,虚拟主机的虚拟网卡直接与Host主机的物理网卡所在的网络相连,可以理解为虚拟机和原创 2011-10-30 18:25:12 · 1036 阅读 · 0 评论 -
边用边学shell编程
下面我们来看一个例子,结合这个例子,我们来讲述Shell Script的语法。 1 #!/bin/bash 2 # we have less than 3 arguments. Print the help text: 3 if [ $# -lt 3 ]; then 4 cat 5 ren -- renames a number of files using原创 2013-06-28 19:26:03 · 1064 阅读 · 0 评论 -
Linux tcpdump命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tc原创 2012-05-31 11:31:39 · 1240 阅读 · 0 评论 -
epoll
epoll相关的系统调用有:epoll_create, epoll_ctl和epoll_wait。Linux-2.6.19又引入了可以屏蔽指定信号的epoll_wait: epoll_pwait。至此epoll家族已全。其中epoll_create用来创建一个epoll文件描述符,epoll_ctl用来添加/修改/删除需要侦听的文件描述符及其事件,epoll_wait/epoll_pwait接收发原创 2012-12-12 21:12:47 · 916 阅读 · 0 评论 -
timerfd
timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,所以能够被用于select/poll的应用场景。1. 使用方法timerfd提供了如下接口供用户使用timerfd_createint timerfd_create(int clockid, int flags);timerfd_create用于创建一个定时器文件。参数clock原创 2012-12-13 20:37:21 · 2524 阅读 · 0 评论 -
GoogleTest开源C++单元测试框架
玩转Google开源C++单元测试框架Google Test系列(gtest)(总)前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实gtest本身的实现并不复杂,我原创 2013-01-22 18:24:13 · 706 阅读 · 0 评论 -
Linux的epoll模型
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该值是1024,搜索内核原创 2013-03-16 19:22:57 · 926 阅读 · 0 评论 -
Epoll介绍和程序实例
Linux Epoll介绍和程序实例1. Epoll 是何方神圣?Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Conn原创 2013-03-16 19:33:51 · 962 阅读 · 0 评论 -
gdbm编程示例
我在ubuntu是需要先安装GDBM的。总结一下GDBM的特点:按key-value存储数据,value是可变长的。它只对key进行索引,只能按key进行查询。高效的查询,低效的插入,适合于存储比较静态的数据。GDBM可以很容易地编译进一个可发布的二进制文件中,不需要独立地安装数据库服务器。不支持SQL,不支持表之间创建关系,更不用说存储过程、触发器什么的了。操作GDBM就原创 2013-03-16 21:16:14 · 1248 阅读 · 0 评论 -
linux定时任务的设置
为当前用户创建cron服务1. 键入 crontab -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 保存文件并并退出 */2 * * * * /bin/sh /home/admin/jiaobe原创 2013-03-29 21:11:53 · 975 阅读 · 0 评论 -
dup and dup2的剖析
dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区分这两种原创 2013-06-07 20:52:20 · 1195 阅读 · 0 评论 -
cpio命令用法
cpio命令 利用cpio 可将文件或目录从文件库获取出来或将散列文件拷贝到文件库。cpio 的指令格式: cpio –i[bcdmrtuv] [patterns] cpio –o [abcv] cpio –p [adlmuv][directory] 说明:cpio 共有三种基本模式,-o即copy-out 模式,将一原创 2014-01-07 21:15:31 · 5958 阅读 · 0 评论 -
动态链接库和静态链接库
引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件 (executable file)。程序在运行 时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件 名为“libxxx.a”的原创 2014-01-10 21:25:46 · 908 阅读 · 0 评论 -
弱符号__attribute__((weak))
弱符号:若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak symbol(弱符号),则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使用弱符号。当有函数或变量名可能被用户覆盖时,该函数或变量名可以声明为一个弱符号。弱符号也称为weak alias(弱别名)。怎样声明弱符原创 2014-01-10 21:34:28 · 4089 阅读 · 0 评论 -
Epoll的LT模式与ET模式分析
ET模式仅当状态发生变化的时候才获得通知,这里所谓的状态的变化并不包括缓冲区中还有未处理的数据,也就是说,如果要采用ET模式,需要一直read/write直到出错为止,很多人反映为什么采用ET模式只接收了一部分数据就再也得不到通知了,大多因为这样;而LT模式是只要有数据没有处理就会一直通知下去的. LT(level triggered)是缺省的工作方式,并且同时支持block和no-bl原创 2015-01-10 22:12:41 · 1064 阅读 · 0 评论 -
Linux epoll工作原理
定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被原创 2014-12-13 19:42:28 · 1143 阅读 · 1 评论 -
U盘安装ubuntu组成双系统
简介 想学习一下linux,于是准备安装ubuntu桌面版,去ubuntu官网下载最新了目前最新的ubuntu-12.10-desktop-i386.iso镜像文件。我当前操作系统是win7,去网上搜索到的硬盘安装方法感觉比较麻烦,加上我本身有一个4GB大小的U盘,之前一直中意用U盘安装系统,于是搜索了U盘安装ubuntu的方法。网上的教程写的都比较清楚,不过安装过程中却给我带来不少麻烦原创 2014-12-23 21:51:09 · 908 阅读 · 0 评论 -
vim插件【功能说明、安装方法和使用方法介绍】
11 #=============================================================================122. ctags13 (1). 帮助手册查看14 :help usr_2915 16 (2). 功能17 ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小18原创 2011-12-26 19:52:19 · 1450 阅读 · 1 评论 -
git clone速度慢
解决方法:1.clone最新一个提交git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 2.更新获取完整历史版本[如果需要的话]git fetch --unshallow原创 2014-12-13 22:57:25 · 4465 阅读 · 0 评论 -
signalfd、timerfd、eventfd使用说明
种新的fd加入linux内核的的版本:signalfd:2.6.22timerfd:2.6.25eventfd:2.6.22三种fd的意义:signalfd:传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将信 号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的监听放到se原创 2014-12-13 20:38:42 · 1197 阅读 · 0 评论 -
socketpair
一.概念及用途一个问题:如何创建全双工管道?直接的办法当然是pipe两次,创建两组管道,但是有没有更简单的呢?socketpair就可以了,man socketpair:socketpair - create a pair of connected sockets, The two sockets are indistinguishable,也就是说,用socketpair创建原创 2015-01-02 12:06:02 · 966 阅读 · 0 评论 -
ptrace
下面是转帖的内容,写的很详细。但是不同的linux发行版中头文件的路径和名称并不相同。如在某些发行版中就不存在,其中定义的变量出现在和中。==================================================================================================by Pradeep PadalaCrea原创 2015-01-24 20:28:18 · 975 阅读 · 0 评论 -
强大的vim配置文件,让编程更随意
花了很长时间整理的,感觉用起来很方便,共享一下。我的vim配置主要有以下优点:1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码4原创 2014-08-07 22:18:18 · 688 阅读 · 0 评论 -
git不能上传空目录
git 和 svn 不同,仅仅跟踪文件的变动,不跟踪目录。Perforce 也是如此。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。变通的解决办法是在空目录下存原创 2014-11-07 23:46:27 · 5008 阅读 · 0 评论 -
Linux shell控制台前缀
环境变量 PS1以 Bash shell 为例一般默认的情况下.bashrc里面应该是: ~/.bashrc export PS1=' \u@\h:\w\$ ' 上面的意思是:用户@主机:当前目录 $转义序列 要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制原创 2014-11-20 22:03:41 · 2855 阅读 · 0 评论 -
VIM常用操作
1.查找查找当前词:直接按下*(Shift+8)就可以查找下一个currentword搜索并替换:s/from/to/简单形式。%s/from/to/就是在全文查找from并替换为to。%s/from/to/g表示在全文中查找from并且直接全部替换为to,无须确认2.删除删除一个单词/光标之后的单词剩余部分:dw删除当前字符:x光标之后的该行部分:原创 2014-01-10 22:14:51 · 804 阅读 · 0 评论 -
动态库和静态库
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln原创 2014-01-10 21:17:03 · 851 阅读 · 0 评论 -
线程属性
一.线程属性线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。1.名称:pthread_attr_init/pthread_attr_destroy功能:对线程属性初始化/去除初始化头文件:#includ原创 2014-01-18 22:44:02 · 831 阅读 · 0 评论 -
Ubuntu 下 Subversion 服务器的安装配置
公司的 Subversion 服务器由于电脑硬件原因,经常自动关机,需要重新安装一台服务器。原来的 Subversion 服务器是在 Windows XP 上通过 VisualSVN Server 架设的,现在借此机会将其迁移至 Linux 系统。Linux 发行版我选择了 Ubuntu 12.04 LTS Server,安装系统的过程中可选择将 LAMP 一起装上,这样在系统安装完成之后 Apa转载 2014-04-04 23:10:23 · 944 阅读 · 0 评论 -
SVN命令
签出svn checkout URL path签出指定版本svn checkout –r rev URL签出指定指定日期svn checkout –r “{date}” URL查看工作拷贝从哪里来svn info path更新工作拷贝svn update添加文件到工作拷贝svn add pa原创 2014-07-31 21:56:04 · 819 阅读 · 1 评论