unix 环境编辑
liujianfei526
这个作者很懒,什么都没留下…
展开
-
Linux网络编程一步一步学-IPv6下网络编程步骤
大家都知道,随着互联网上主机数量的增多,现有的32位IP地址已经不够用了,所以推出了下一代IP地址IPv6,写网络程序的要稍微改变一下现有的网络程序适应IPv6网络是相当容易的事。对于我们来说就是IP地址变化了,所以程序里在用到IP地址的地方做相应的改变就可以了。记住:主要是改变程序里设置IP地址和端口等部分的代码。服务器端源代码如下:#include转载 2016-01-31 19:52:22 · 451 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2016-01-27 22:25:13 · 341 阅读 · 0 评论 -
linux按指定时间删除文件和文件夹
find 命令可以完成这一需求,比如删除3天前的所有以“.log”结尾的文件:find /文件路径 -name "*.log" -mtime +2 -exec rm {} \;说明: 1. 文件路径是目标文件所在路径;2. -name 设定目标文件名,建议采用,否则可能误删其他文件;3. -ctime 文件最后一次修改时间,后面只能用整数,单位为天,同时,还转载 2016-09-04 16:18:38 · 27491 阅读 · 2 评论 -
水平出发和边缘出发的区别
在linux的IO多路复用中有水平触发,边缘触发两种模式,这两种模式的区别如下: 水平触发:如果文件描述符已经就绪可以非阻塞的执行IO操作了,此时会触发通知.允许在任意时刻重复检测IO的状态,没有必要每次描述符就绪后尽可能多的执行IO.select,poll就属于水平触发. 边缘触发:如果文件描述符自上次状态改变后有新的IO活动到来,此时会触发通知.在收到一个IO事件通转载 2016-09-06 21:47:43 · 1278 阅读 · 1 评论 -
select,poll,epoll的归纳总结区分
Select、Poll与Epoll比较以下资料都是来自网上搜集整理。引用源详见文章末尾。1 Select、Poll与Epoll简介Selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据转载 2016-09-06 21:48:12 · 261 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2016-09-06 21:48:58 · 368 阅读 · 0 评论 -
线程同步的几种方法的总结
线程同步的方式包括:互斥锁、读写锁、条件变量、信号量和令牌。互斥锁和读写锁:提供对临界资源的保护,当多线程试图访问临界资源时,都必须通过获取锁的方式来访问临界资源。(临界资源:是被多线程共享的资源)当读写线程获取锁的频率差别不大时,一般采用互斥锁,如果读线程访问临界资源的频率大于写线程,这个时候采用读写锁较为合适,读写锁允许多个读线程同时访问临界资源,读写线程必须互斥访问临界资源。读写转载 2016-09-07 10:34:58 · 8877 阅读 · 0 评论 -
CGI与FastCGI
当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我转载 2016-11-20 19:38:42 · 265 阅读 · 0 评论 -
Linux信号列表
我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV转载 2016-11-20 19:33:49 · 2517 阅读 · 0 评论 -
listen()的backlog参数和未完成队列、已完成队列的关系
listen函数是网络编程一个基本的函数,而且它的backlog参数却是和TCP协议息息相关的。我们来看一下一个backlog参数到底有多少秘密。一、 为了理解backlog参数,我们必须首先认识listen函数。点击(此处)折叠或打开#includesys/socket.h>int listen(int sockfd, int backlog)转载 2016-11-21 22:28:41 · 370 阅读 · 0 评论 -
apache负载均衡
本人现在在研究apache负载均衡技术,目前在网上查找相关资料只找到对三大规则的基本说明,现在想知道apache是否能实现以下三种方案:1:响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅转载 2016-11-22 16:16:17 · 609 阅读 · 0 评论 -
几种负载均衡算法
摘 要:负载平衡,负载平衡即将到来之评估是多个操作单元上执行,如Web服务器,FTP服务器,企业关键应用服务器和其他关键任务服务器,从而共同完成工作任务。基于现有网络结构之负载均衡,它提供了一种廉价且有效之方式来扩展网络设备和服务器之带宽,增加吞吐量,提高网络数据处理能力,提高网络之灵活性和可用性。基于此计算机算法之负载均衡算法,旨在提高计算机之工作精度和效率。 关键词:负载平衡;负载转载 2016-11-22 16:19:24 · 3786 阅读 · 0 评论 -
HTTP 协议发展历史
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。本文介绍 HTTP 协议的历史演变和设计思路。一、HTTP/0.9HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。最早版本是1991年发布的0.9版。该版本极其转载 2016-11-22 18:00:29 · 6257 阅读 · 1 评论 -
Linux多线程编程
线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统转载 2016-01-28 17:35:28 · 276 阅读 · 0 评论 -
Linux进程间通信——使用命名管道
在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系转载 2016-01-31 11:48:29 · 313 阅读 · 0 评论 -
offsetof与container_of宏[总结]
1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认真研转载 2016-01-31 11:42:54 · 237 阅读 · 0 评论 -
linux stat函数讲解
stat函数讲解表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于er转载 2016-01-31 11:42:17 · 338 阅读 · 0 评论 -
Linux下的IPC-UNIX Domain Socket 2013-08-30 11:01:02
一、 概述UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain Socke转载 2016-01-31 11:41:38 · 342 阅读 · 0 评论 -
LINUX环境并发服务器的三种实现模型
服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。1 循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求转载 2016-01-31 10:27:08 · 294 阅读 · 0 评论 -
linux进程间通信的几种机制的比较及适用场合
1.# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正转载 2016-01-29 15:23:58 · 670 阅读 · 0 评论 -
sigsetjmp,siglongjmp的使用
相关函数:longjmp, siglongjmp, setjmp 表头文件:#include 函数定义:int sigsetjmp(sigjmp_buf env, int savesigs) 函数说明:sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序好执行。参数转载 2016-01-16 13:18:11 · 547 阅读 · 0 评论 -
LINUX 的Singal 信号 定义 说明
转载:http://blog.csdn.net/ljx0305/archive/2008/09/09/2904056.aspxSIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE转载 2016-01-14 16:34:12 · 437 阅读 · 0 评论 -
getpwnam函数学习
来个百度的复制粘贴getpwnam getpwnam() 函数功能:获取用户登录相关信息 原型定义: struct passwd *getpwnam(const char *name); 表头文件: #include #include 信息存贮在如下的结构体之中 struct passwd { char * pw_name; /* Username. */转载 2016-01-14 15:49:40 · 1248 阅读 · 0 评论 -
linux awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho转载 2016-01-09 21:55:31 · 304 阅读 · 0 评论 -
Linux 下的 fork()
[cpp] view plain copy for( i = 0; i if( fork() == 0 ) continue; 共生成多少个子进程?简查了一下 fork() 的知识,它调用一次,返回两次,进入子进程并返回一次,然后退到父进程再返回一次,子进程中返回值为 0,父进程中返回的是子进程的进程号。答案是 3转载 2016-01-22 10:48:15 · 310 阅读 · 0 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码转载 2016-01-28 19:28:53 · 378 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消转载 2016-01-28 19:16:31 · 370 阅读 · 0 评论 -
linux下的僵尸进程处理SIGCHLD信号
什么是僵尸进程?首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息。这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息。而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wai转载 2017-09-03 09:36:54 · 488 阅读 · 0 评论