Linux编程
文章平均质量分 74
RoyKuang07
这个作者很懒,什么都没留下…
展开
-
如何避免产生僵尸进程
后面补充http://www.cnblogs.com/wuchanming/p/4020463.html僵尸进程原创 2016-05-06 08:53:17 · 461 阅读 · 0 评论 -
进程间通信:管道和socketpair的区别
最近在总结之前做过的FTP服务器小项目时,突然想到服务进程和nobody进程之间的通信方式为什么不能采用其他方式时。查了点资料,总结就是socketpair和管道形式非常的类似,唯一的不同就是sockerpair支持全双工,这样在进程之间发送数据的时候变得非常的简单方便。管道pipe是半双工的,pipe两次才能实现全双工,使得代码复杂。socketpair直接就可以实现全双工socke原创 2016-09-13 15:44:51 · 3308 阅读 · 0 评论 -
Linux最常用的20个命令
1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[plain] view plain copy print?cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换原创 2016-09-02 10:29:27 · 1784 阅读 · 0 评论 -
muduo网络库源码分析-定时器
首先,我们先要明白为什么需要设计这样一个定时器类?在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用Linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。Muduo 的 TimerQueue 采用了最简单的实现(链表)来管理定时器,它的效率比不上常见的 binary heap 的做法,如果程序原创 2016-09-14 02:05:23 · 646 阅读 · 0 评论 -
进程间通信-命名管道
之前看过如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字原创 2016-09-02 14:05:16 · 538 阅读 · 0 评论 -
进程间通信-消息队列
下面来说说如何用不用管道来进行进程间的通信,消息队列与命名管道有很多相似之处。一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX原创 2016-09-02 14:07:30 · 583 阅读 · 0 评论 -
进程间通信-信号量
一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其原创 2016-09-02 14:10:21 · 573 阅读 · 0 评论 -
进程间通信-共享内存
一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到原创 2016-09-02 14:25:44 · 770 阅读 · 0 评论 -
Makefile知识点总结
1. make工具利用make工具可以自动完成编译工作,这些工作包括:如果修改了某几个源文件,则只重新编译这几个源文件如果某个头文件被修改了,则重新编译所有包含该头文件的源文件利用这种自动编译可以大大简化开发工作,避免不必要的重新编译。make工具通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的编译、连接规则。回到原创 2016-08-24 15:24:34 · 816 阅读 · 2 评论 -
同步和异步,阻塞和非阻塞
刚开始学习网络编程的时候,就会碰到这几个概念。将道理这几个概念真的很容易让人一脸懵逼。我还是把之前的理解整理一下吧,免得以后碰到这个又会一脸懵逼。先摘录一段维基的解释:维基百科,自由的百科全书异步方法调用或异步方法模式是(多线程)面向对象程序设计中用于异步调用对象的潜在的长期运行方法的一种设计模式[1]。 它等价于Allan Verm原创 2016-09-18 17:46:05 · 426 阅读 · 0 评论 -
网络编程之Reactor 模式
我理解Reactor基本的架构是 epoll+线程池。这篇博文主要从以下几个方面进行阐述:(1)reactor模式的一个介绍:(只要是我的理解)(2)关于线程池的说明。(3)如何将epoll + 池结合起来实现一个群聊 一. reactor 模式:从我个人的理解角度,所谓的reactor模式类似于:场景:银行, 和三个业务工作人员 ,一个接待原创 2016-09-18 18:30:02 · 802 阅读 · 0 评论 -
Linux 条件变量的使用pthread_cond
使用单个条件变量时,必须cond_wait首先达到wait状态 用sleep/******************************************************/*: Object detection algrithm running in Linux /*: Update: Naive version(线程实现简单的生产者消费者模式)/*: 1:Vehicl原创 2017-02-18 17:40:28 · 800 阅读 · 0 评论 -
Linux命令搜索路径
一、库文件的搜索路径:1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)3、在编译原创 2017-02-19 22:40:21 · 2732 阅读 · 0 评论 -
Linux守护进程创建
概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭;守护进程的名称通常以d结尾,比如sshd、xinetd、crond、atd等。守护进程编程规则 调用umask将文件模式创建屏蔽字设置为一个已知值(通常是0) 调用fork(),创建新进程,它会是将来的守护进程原创 2016-09-01 13:30:51 · 528 阅读 · 0 评论 -
Linux系统编程文件IO
转载:Linux系统编程文件IO今天继续学习文件与io,主要是学习文件共享及文件、复制文件描述符,有点抽象,主要是概念上的理解,但是很重要,下面一一来分解:文件共享:回顾一下,在linux系统调用中,是通过文件描述符来访问文件的,文件描述符是一个非负的整数,这是站在用户的观点来看的,实际上在linux内核上是有一定的数据结构来表示文件描述符的,下面就从三方面来看图分析一转载 2016-09-01 10:41:57 · 558 阅读 · 0 评论 -
dup和dup2文件描述符相关函数
dup和dup2函数dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status原创 2016-05-06 09:03:16 · 592 阅读 · 0 评论 -
进程控制exec函数族
进程函数族进程控制原创 2016-05-06 09:25:19 · 419 阅读 · 0 评论 -
epoll和poll、select的区别
二、epoll与select、poll区别1、相比于select与poll,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。内核中的select与poll的实现是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。2、epoll的实现是基于回调的,如果fd有期望的事件发生就通过回调函数将其加入epoll就绪队列中,也就是说它只关心“活跃”的fd,与fd数目无关。原创 2016-05-06 09:43:24 · 734 阅读 · 0 评论 -
Linux环境编程 背景知识
转:http://blog.csdn.net/zjf280441589/article/details/43875947计算机系统硬件组成 总线贯穿整个系统的一组电子管道称为总线, 分为: 片内总线 系统总线数据总线DB地址总线AB控制总线CB 外部总线 I/O设备I/O设备是转载 2016-05-04 22:16:39 · 465 阅读 · 0 评论 -
Linux系统编程基础知识-Linux进程地址空间和虚拟内存
转载自:Linux进程空间和虚拟内存一、虚拟内存先来看一张图(来自《Linux内核完全剖析》),如下:分段机制:即分成代码段,数据段,堆栈段。每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读、可写和可执行)一个段时,当前特权级CPL就会与段的特权级进行比较,以确转载 2016-05-06 11:13:18 · 510 阅读 · 0 评论 -
Linux系统编程-文件打开关闭
一、文件描述符对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体)。一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)原创 2016-05-06 11:20:13 · 1084 阅读 · 0 评论 -
Linux系统编程-文件IO函数
一、ioctl 函数ioctl用于向设备发控制和配置命令,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体,而ioctl命令传送的是控制信息,其中的数据是辅助的数据。例如,在串口线上收发数据通过read/write操作,而串口的波特率、校验位、停止位通过原创 2016-05-06 11:29:29 · 826 阅读 · 0 评论 -
Linux开发工具相关的资料
GDBGDB(一)GDB(二)MakefileMakefile 1Makefile 2原创 2016-08-28 19:44:12 · 483 阅读 · 0 评论 -
epoll编程框架
epoll简介epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高原创 2016-08-28 21:48:16 · 764 阅读 · 0 评论 -
epoll ET模式和LT模式分析
关于epoll的问题很早就像写文章讲讲自己的看法,但是由于ffrpc一直没有完工,所以也就拖下来了。Epoll主要在服务器编程中使用,本文主要探讨服务器程序中epoll的使用技巧。Epoll一般和异步io结合使用,故本文讨论基于以下应用场合: 主要讨论服务器程序中epoll的使用,主要涉及tcp socket的相关api。 Tcp socket 为异步模式,包括socket的异步读写,原创 2016-08-28 21:52:56 · 1366 阅读 · 0 评论 -
epoll模型的实现原理
一、epoll模型概念与比较select、poll、epoll一样都是I/O多路复用技术。网络编程还有其他常用模型,如每连接一进程(PPC, 在Apache服务器中采用)、每连接一线程(TPC)。还有Windows中的IOCPselect/pselect, poll/ppoll与epoll的比较:1. 历史上,select最先出现,pselect是POSIX定义的psele原创 2016-08-28 23:04:33 · 1390 阅读 · 0 评论 -
Linux文件描述符表和文件的关系
转载1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此转载 2016-09-01 10:37:44 · 713 阅读 · 0 评论 -
Linux加载库目录顺序
linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是转载 2017-04-23 13:20:12 · 1509 阅读 · 0 评论