
linux
文章平均质量分 66
HandsomeWGB
高起点
展开
-
共享内存
共享内存 共享内存就是允许两个或更多进程访问同一个块内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任原创 2017-03-16 20:12:31 · 632 阅读 · 0 评论 -
线程池
诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这样就引入翻译 2017-06-26 16:18:44 · 497 阅读 · 0 评论 -
poll服务器
poll函数:int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数: fds:存放需要被检测状态的Socket描述符;与select不同(select函数在调用之后,会清空检测socket描述符的数组),每当调用这个函数之后,系统不会清空这个数组,而是将有状态变化的描述符结构的revents变量状态变化,操作起来比较方便;nfd原创 2017-07-13 16:03:53 · 546 阅读 · 0 评论 -
进度条(shell)
C编写的进度条: http://blog.youkuaiyun.com/addw1/article/details/55292922shell编写#!/bin/bashfunction bar(){ i=0 bar='' lable=('|' '\\' '-' '/') index=0 while [ $i -le 100 ] do原创 2017-07-13 15:11:15 · 431 阅读 · 0 评论 -
crond/crondtab
crondLinux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分配系统任务调度:系统周期性所要执行的工作,在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。 用户任务调度:用原创 2017-06-09 16:59:57 · 834 阅读 · 0 评论 -
eval
eval功能 告知shell取出eval的参数,然后按照参数特性来执行。参数数目不限,彼此用分号隔开。 区别: eval会对后面命令进行两次扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用, 则保证间接引用的语义。 `和$()两种替换方式都只对要替换的部分进行一次扫面 eval命令将会首先扫描命令行进行所有的置换,然后执行该命令,所以,eval适用原创 2017-07-10 20:53:24 · 932 阅读 · 0 评论 -
守护进程(Daemon)
守护进程(精灵进程):独立于控制终端,不能直接和用户交互,不受用户登录注销的影响的一种进程。守护进程特点: 独立于控制端(不受控制端的影响)自成进程组自成回话本身是孤儿进程(fork之后父进程退出),所以父进程为init(孤儿进程都被1号进程收养)守护进程通常采用d结尾,例如:Internet服务器inted;Web服务器httpd;acpid电源管理;sshd远程登录守护进程一些应用场原创 2017-06-07 17:49:48 · 483 阅读 · 0 评论 -
gdb调试多进程与多线程
gdb是Linux下的代码调试工具,在使用时要加 -g选项,开始:gdb file;退出:Ctrl+d或q。gdb调试多进程与多线程 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。原创 2017-06-06 11:57:30 · 381 阅读 · 0 评论 -
命名管道(FIFO)
FIFOFIFO Concept管道的一个不足之处是没有名字,因此,只能用于具有亲缘关系的进程间通信,在命名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名(pathname)与之关联,以FIFO的文件形式存储于文件系统中命名管道是一个设备文件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通原创 2017-03-24 17:25:26 · 673 阅读 · 0 评论 -
死锁
产生死锁的原因:因为系统资源不足进程运行推进的顺序不合适资源分配不当等 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的条件:互斥:一个资源每次只能被一个进程使用占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放非抢占:进程已获得的资源,在末使用完之前,原创 2017-03-31 21:43:21 · 480 阅读 · 0 评论 -
线程(Linux)
ThreadThread application scenario 有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用用场,比如实现一个图形界面的下载软件,一方面需要和用户交互,等待和处理用户的鼠标键盘事件,另一方面又需要同时下载多个文件,等待和处理从多个网络主机发来的数据,这些任务都需要一个“等待-处理”的循环,可以用多线程实现,一个线程专门负责与用户交互,另外几个线程每个线程原创 2017-03-23 21:08:33 · 594 阅读 · 0 评论 -
信号量
信号量信号量的本质是一种数据操作锁信号量的本质是具有原子性的计数器信号量本身只是一种外部资源的标识信号量本身不具有数据交换的功能,而是通过控制其他的通信资源来实现进程间通信,在此过程中负责数据操作的互斥、同步等功能原子性两种状态如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性临界资源不同进程共同看到的资源一次仅允许一原创 2017-03-14 13:25:58 · 1077 阅读 · 0 评论 -
消息队列
消息队列 消息队列 提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与命名管道一样,每个消息的最大长度MSGMAX,每个消息队列的总的字节数上限MSGMNB,消息队列的总数上限MSGMNI消息队列是基于消息的管道是基于字节流的消息队列的读取不一原创 2017-03-18 15:21:44 · 393 阅读 · 0 评论 -
管道(pipe)
管道管道概念 调用pipe函数在内核中开辟一段缓冲区称为管道 函数原型:int pipe(int filedes[2]) 返回值:成功–>0;失败–> -1 有一个读端(filedes[0])和一个写端(filedes[1]) 通过filedes参数传出给用户程序两个文件描述符 通过read和write函数读写内核缓冲区,进行通信原创 2017-03-19 22:36:20 · 590 阅读 · 0 评论