Linux
文章平均质量分 69
Jaee
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux(一)时间分类和find指令
Linux时间分类和find指令原创 2017-02-15 11:11:15 · 747 阅读 · 0 评论 -
Linux网络编程【四】:进程池、线程池原理及简单线程池源码分析
进程池和线程池概述进程池和线程池相似,所以这里我们以进程池为例进行介绍。如没有特殊声明,下面对进程池的讨论完全是用于线程池。进程池是由服务器预先创建的一组子进程,这些子进程的数目在 3~10 个之间(当然这只是典型情况)。线程池中的线程数量应该和 CPU 数量差不多。进程池中的所有子进程都运行着相同的代码,并具有相同的属性,比如优先级、 PGID 等。当有新的任务来临时,主进程将通过某种方式选择进程池中的某一个子进程来为之服务。相比于动态创建子进程,选择一个已经存在的子进程的代价显得小得多。至于主原创 2017-06-02 01:20:49 · 1092 阅读 · 0 评论 -
Linux(三):简单进度条的原理及实现
Linux:进度条的简单实现,缓冲区,进度条原理,换行和回车原创 2017-02-17 10:56:50 · 3376 阅读 · 0 评论 -
Linux网络编程【一】:TCP socket套接字详解
1.socketsocket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成 的socketpair就唯一标识一个连接。 socket本身有“插座”的意思,因此用来描述网络连接的一 对一关系原创 2017-05-26 23:51:48 · 8452 阅读 · 1 评论 -
Linux网络编程【七】:TCP协议高性能服务器(http)模型之I/O多路转接poll
poll:poll的实现和select非常相似,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,其他的都差不多。不同与select使⽤三个位图来表⽰三个fdset的⽅式,poll使⽤⼀个 pollfd的指针实现该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它原创 2017-06-12 18:59:30 · 863 阅读 · 0 评论 -
Linux网络编程【五】:TCP协议高性能服务器(http)模型之I/O多路转接select
I/O多路转接之select系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。select:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。参数意义:nfds:待测试描述符个数。最大文件描述符+1readfds/writefds/exceptfds:分别对应于需要检测的可读文件件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。异常原因: 1.原创 2017-06-05 18:17:15 · 719 阅读 · 0 评论 -
Linux网络编程【六】:TCP协议高性能服务器(http)模型之I/O多路转接epoll
什么是epoll?epoll是linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。注:epoll除了提供s原创 2017-06-12 01:32:41 · 778 阅读 · 0 评论 -
Linux定时任务:crond和crontab详解
1.crond命令:使用crond定时任务的原因:linux系统的定时任务crond,相当于我们平时生活中的闹钟的功能。可以满足周期性执行任务的需求。要查看linux是否已经安装crond,使用命令:rpm -qa | grep croncrond是一个linux下的定时执行工具(相当于windows下的scheduled task),可以在无需人工干预的情况下定时地运行任务t原创 2017-07-08 11:58:20 · 4677 阅读 · 0 评论 -
【shell脚本】入门篇(一)
Shell的作⽤是解释执行用户的命令,用户输⼊⼀条命令,Shell就解释执行⼀条,这种⽅式称为交互式(Interactive),Shell还有⼀种执行命令的方式称为批处理(Batch),⽤户事先写⼀ 个Shell脚本(Script),其中有很多条命令,让Shell⼀次把这些命令执⾏完,⽽不必⼀条⼀条地敲命令。 Shell脚本和编程语⾔很相似,也有变量和流程控制语句,但Shell脚本是解释执⾏的,不原创 2018-01-11 17:24:10 · 926 阅读 · 0 评论 -
【shell脚本】脚本实现彩色进度条
实现代码:########################################################################## File Name: procbar.sh# Author: liumin# mail: 1106863227@qq.com# Created Time: Sun 02 Jul 2017 09:21:46 AM CST##原创 2017-07-02 10:38:22 · 4035 阅读 · 0 评论 -
Linux(十二):守护进程为什么fork两次?
守护进程也称精灵进程( Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行着。这种进程有一个名称叫守护进程(Daemon)。例如:udevd负责维护/dev目录下的设备文件,acpid负责电源管理,syslogd负责维护/var/log原创 2017-05-11 01:21:39 · 2271 阅读 · 1 评论 -
Linux网络编程【三】:TCP服务器多进程和多线程(http访问)版本
为了让服务器同时接受多个客户端访问,所以需要多进程或者多线程多进程版本:#include#include#include#include#include#include#include#includestatic void usage(const char* proc){ printf("%s [ip] [port]", proc);}int startup(c原创 2017-06-02 00:41:17 · 1175 阅读 · 0 评论 -
Linux(八):进程通信IPC(二)之命名管道
管道的一个不足之处是没有名字,因此,只能用于具有亲缘关系的进程间通信,在命名管道(named pipe或FIFO)提出后,该限制得到了克服。 FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的是, FIFO(first input first output)总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出。原创 2017-02-28 21:52:01 · 388 阅读 · 0 评论 -
Linux(二):CentOS6.5 vim配置(含窗口)
CentOS6.5 vim配置(含窗口)原创 2017-02-16 09:14:32 · 489 阅读 · 0 评论 -
Linux(五):进程调度算法
进程调度,用户进程数进程调度一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。无论是在批处理系统还是分时系统中,用户进程数进程调度一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。原创 2017-02-19 12:15:43 · 549 阅读 · 0 评论 -
Linux(六):关于atexit函数
atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。当然atexit函数只有进程退出时,系统自动调用用atexit注册过的函数,注册函数指针指向的回调函数。很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit()结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就是用atexit()函数来注册原创 2017-02-20 10:04:37 · 452 阅读 · 0 评论 -
Linux(四):Linux中的进程控制块(PCB)—task_struct(部分字段)
进程控制块(PCB) 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解下其中都有哪些信息。 在Linux中,这个结构叫做task_struct。task_struct是Linux内核的一种数据结构,它会被装载到RAM里并且包含着进程的信息。每个进程都把它的信息放在ta原创 2017-02-19 11:43:45 · 1918 阅读 · 0 评论 -
Linux(十一):模拟实现sleep、竞态条件
sleep函数:程序挂起一段时间后继续执行需要以下接口:1. sigactionsigaction函数可以读取和修改与指定信号相关联的处理动作。调用成功则返回0,出错则返回- 1。 signo是指定信号的编号。若act指针非空,则根据act修改该信号的处理动作。若oact指针非 空,则通过oact传出该信号原来的处理动作。2.alarmalarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它向进程发送SIGALRM信号。可以设置忽略或者不捕获此信号,如果采用默认方式原创 2017-05-02 23:44:24 · 536 阅读 · 0 评论 -
CRC差错校验原理及实例
CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。相比于奇偶校验码(PCC)只能校验一位错误,循环冗余校验码(CR原创 2017-05-11 23:51:00 · 34511 阅读 · 5 评论 -
Linux(七):进程通信IPC(一)之简单的匿名管道编写
管道是一种最基本的IPC机制,由pipe函数创建:#include <unistd.h> int pipe(int filedes[2]);调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有1个读端1个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输入1是标准输出一样)。所以管道在用户程序看起来就像一个打开的文件,通过read(filedes[0]);或者write(filede原创 2017-02-27 22:49:03 · 406 阅读 · 0 评论 -
Linux(十):进程间通信IPC(四)之信号量
当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用:大于0,资源可以请求,将信号量的值-1(P操作);等于0,无资源可用,进程会进入睡眠状态直至资源可用;当进程不再使用一个信号量控制的共享资源时,信号量的值+1(V操作)。PV操作均为原子操作。这是由于信号量主要的作用是维护资源的互斥或多进程的同步访问。而在信号量的创建及初始化上,不能保证操作均为原子性(SystemV版本信号量的缺陷),因为这个版本的信号量的创建与初始化是分开的。。补充两个概念:临界资源:一次只允许一个原创 2017-03-14 19:01:51 · 345 阅读 · 0 评论 -
Linux(九):进程通信IPC(三)之验证管道容量
首先,在内存中管道是以环形队列实现的,数据从写段流入从读端流出,实现进程间通信。验证管道容量实现:读端关闭,写端一直写原创 2017-03-01 15:05:26 · 425 阅读 · 0 评论 -
【shell脚本】eval命令详解及命令代换
1.命令代换在shell脚本语言中有两种命令代换方式1>由反引号(`...`)括起来的也是⼀条命令,Shell先执行该命令,然后将输出结果立刻代换到当前命令行中。DATE=`date`echo $DATE2>也可以使用 $() 代换DATE=$(date)示例:两者间的区别和联系:联系:均可用于命令代换区别:1) Bash中的后置引用 `CO原创 2017-06-15 01:33:58 · 1915 阅读 · 0 评论
分享