Unix/Linux
xiaocuancuan
这个作者很懒,什么都没留下…
展开
-
Linux平台Makefile文件的编写基础篇
目的: 基本掌握了 make 的用法,能在Linux系统上编程。环境: Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备: 准备三个文件:file1.c, file2.c, file2.h file1.c: #include转载 2013-08-18 16:15:31 · 486 阅读 · 0 评论 -
共享内存IPC入门学习
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -原创 2013-09-17 15:28:00 · 772 阅读 · 1 评论 -
epoll使用入门学习
处理大并发之二对epoll的理解,epoll客户端服务端代码序言:该博客是一系列的博客,首先从最基础的epoll说起,然后研究libevent源码及使用方法,最后研究nginx和node.js,关于select,poll这里不做说明,只说明其相对于epoll的不足,其实select和poll我也没用过,因为我选择了epoll。说起epoll,做过大并发的估计都不陌生,之转载 2013-09-17 16:17:44 · 834 阅读 · 0 评论 -
unix环境高级编程-5.4-缓冲
其实缓冲在unix的操作系统里,就是为了减少read和write的调用次数。在第三章中,对不同缓冲区的长度设置,执行IO所要的cpu时间量是不一样的。他也对每个io流自动的进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是他的缓冲。标准I/O缓冲提供了三种类型的:(1)全缓冲。这种情况下,是在填满了标准的IO缓冲区后才进行实际的I/O转载 2013-09-18 10:52:39 · 506 阅读 · 0 评论 -
UNIX网络编程初步
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令转载 2013-09-25 21:54:44 · 593 阅读 · 0 评论 -
多进程通信(IPC)--匿名管道和命名管道
Unix进程之间的通信主要有四种:管道,共享内存,消息队列,套接字。1、匿名管道 匿名管道是一种未命名的、单向管道,通常用来在一个父进程和一个子进程之间传输数据。匿名的管道只能实现本地机器上两个进程间的通信,而不能实现跨网络的通信。使用pipes函数来创建管道: int pipe(int filedes[2]); 该函数通过参数返回两个文件描述符,filed原创 2014-01-27 20:20:16 · 838 阅读 · 0 评论 -
进程基本介绍
1、进程创建 pid_t fork(); fork 返回的值非常有趣。其中一个返回 0;另一个返回一个非零值。获得 0 的进程称为子进程,非零结果属于原始进程,即父进程.原创 2014-01-27 10:28:50 · 644 阅读 · 0 评论 -
多进程通信(IPC)--共享内存
1、共享内存介绍 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要原创 2014-01-28 11:25:52 · 1235 阅读 · 0 评论 -
select用法详解
select函数的C API版本是这样的:int select( int width,//最大句柄数加1 fd_set *read_fds,//监视的可读文件句柄集合。 fd_set *write_fds,//监视的可写文件句柄集合。 fd_set*excepr_fd原创 2014-02-21 14:43:14 · 798 阅读 · 0 评论 -
setsockopt()函数用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历转载 2013-09-17 15:11:21 · 745 阅读 · 0 评论 -
GDB的使用方法(推荐)
调试程序,快捷的方法就是使用gdb,功能超级强悍。下面一篇文章为经典文章。看了之后,肯定收获不小 一、GDB的静态调试启动方法:1、当需要在命令行通过gdb来启动可执行程序的时候,可使用一下命令: gdb 这个时候gdb会加载可执行程序的符号表和堆栈,并为启动程序作好准备; 接下来,需要设置可执行程序的命令行参数: set args转载 2014-02-20 15:37:42 · 493 阅读 · 0 评论 -
进程管理与通信
进程管理与通信进程的管理进程和程序的区别:进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化程序:存放在磁盘上的指令、数据的有序集合 是个文件,可直观看到程序program 静态的概念,本身不会发生变化。指令谁来执行,数据谁来访问?cpu!但前提是cpu能够接触到,程序执行过程需要cpu、内存、以及相关的资源。进程是转载 2014-04-09 09:54:46 · 624 阅读 · 0 评论 -
多进程通信(IPC)--消息队列
一、消息队列的基本概念 消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中,只有在内核重启(即操作系统重启)或者显示地删除一个消息队列时,该消息队列才会被真正删除。 操作消息队列时,需要用到一些数据结构,熟悉这些数据结构是掌握消息队列的关键。下面介绍几个重要的数据结构。 1、消息缓冲结构 向消息队原创 2014-02-08 16:50:54 · 1118 阅读 · 1 评论 -
UNIX线程
UNIX线程单个控制线程的进程在同一时刻只做一件事情,有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。 使用多线程的好处:1、 通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。2、 多个进程必须使用操作系统提供的复杂机制才能实现内存和文件描述符的共享,而多个线程自动地可以访问相转载 2014-06-11 13:07:25 · 676 阅读 · 0 评论 -
搭建ACE-5.7.4+VS2008开发环境
1、下载安装Microsoft Visual Studio 2008,下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=83C3A1EC-ED72-4A79-8961-25635DB0192B&displaylang=zh-cn,这个是“Visual Studio 2008 专业版(90 天试用版)”。转载 2013-10-03 00:03:15 · 953 阅读 · 0 评论 -
Unix网络编程中的的五种I/O模型
1. 阻塞I/O模型例如UDP函数recvfrom的内核到应用层、应用层到内核的调用过程是这样的:首先把描述符、接受数据缓冲地址、大小传递给内核,但是如果此时该与该套接口相应的缓冲区没有数据,这个时候就recvfrom就会卡(阻塞)在这里,知道数据到来的时候,再把数据拷贝到应用层,也就是传进来的地址空间,如果没有数据到来,就会使该函数阻塞在那里,这就叫做阻塞I/O模型,如下图:转载 2013-09-16 10:36:53 · 1093 阅读 · 0 评论 -
同步/异步与阻塞/非阻塞的区别
这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务了.前者(排队等候)就是同步等待消息,而后者(等待别人通知)就是异步等待消息.在异步消息处理中,等待消息者转载 2013-08-19 23:15:36 · 473 阅读 · 0 评论 -
大并发服务器不得不说的技术--http 缓存
前面所说技术订都是服务器端一个人在努力,有时候也需要客户端配合。一个链接请求过程大致可以分成几个阶段如果客户端发送同样的请求,且结果都一样,我们是不是可以缓冲一下呢?是不是可以减少几步呢? 的确可以,一般来说以下几种方法:1.我们先试着在服务端进行缓冲,我们试着将一个已经返回的长链接发送内容不作释放,下次请求时直接返回刚才发送的内转载 2013-08-20 09:21:46 · 586 阅读 · 0 评论 -
Http协议详解(定义和特点)
什么是HTTP协议HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议是指计算机原创 2013-08-20 10:02:59 · 920 阅读 · 0 评论 -
Http协议详解(URl讲解)
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下schema://host[:port#]/path/.../[;url-params][?query-string][#anchor] scheme 指定低层使用的协议(例如:http, https, ftp) host原创 2013-08-20 10:08:34 · 1020 阅读 · 0 评论 -
C++内存泄露解析
1、定义内存泄露简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。2、内存泄露的各种情况1)new,malloc后没有delete,free2)创建内核对象(比如CreateFile,CreateMutex,CreateThread),后没有释放内核对象句柄.3)创建内存映射文件,Cr原创 2013-08-19 09:26:14 · 868 阅读 · 0 评论 -
awk学习文章,非常全面
转自:http://www.linuxpk.com/58413.html awk是一种非常好的语言,同时有一个非常奇怪的名称。在本系列的文章中,DanielRobbins 将使您迅速掌握 awk编程技巧。随着本系列的进展,将讨论更高级的主题,最后将演示一个真正的高级awk 演示程序。awk是一种很棒的语言。awk 适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行转载 2013-08-23 23:03:24 · 619 阅读 · 0 评论 -
Shell脚本学习
第26章 Shell 编程在DOS操作系统中,可以把多个DOS指令放在文件里作批处理。在Linux系统中也有类似的批处理命令,这些批处理命令在Linux中叫做Shell脚本(Shell Script )。其功能已经和一般的高级语言不相上下。Shell脚本是以文本方式储存的,而非二进制文件。必须在Linux系统的Shell下解释执行。不同Shell的脚本大多会有一些差异,所以不能将写给A转载 2013-08-24 16:29:16 · 709 阅读 · 0 评论 -
linux下安装和卸载软件
Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序” 来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。 软件的安装 Linux下软件原创 2013-08-26 12:40:02 · 689 阅读 · 0 评论 -
nginx源码学习资源(不断更新)
nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的。看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码。 现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份:https://github.com/jian转载 2013-08-19 00:45:44 · 778 阅读 · 0 评论 -
GDB调试程序
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:转载 2013-09-02 22:06:07 · 399 阅读 · 0 评论 -
valgrind 的使用简介
一 valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构转载 2013-09-02 21:19:44 · 507 阅读 · 0 评论 -
POSIX 多线程程序设计完整入门学习(转载)
目录表 摘要 译者序Pthreads 概述 什么是线程? 什么是Pthreads? 为什么使用Pthreads? 使用线程设计程序 Pthreads API编译多线程程序 线程管理 创建和终止线程 向线程传递参数 连接(Joining)和分离( Detaching)线程 栈管理 其它函数 互斥量(Mutex Variables)原创 2013-09-12 17:07:22 · 2464 阅读 · 0 评论 -
Epoll介绍和程序实例(转)
1. Epoll 是何方神圣?Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Connection ,简称 PPC),原创 2013-09-15 00:14:30 · 621 阅读 · 0 评论 -
linux 网络编程【五】 非阻塞通信epoll
Epoll引入Epoll在linux 2.6内核中引入,替代了以前的select/poll模型,能够充分支持linux下的大规模并发网络程序。Epoll和其他linux下并发网络程序对比PPC典型的Apache模型,Process Per Connection,为每一个新的连接创建一个进程进行相关的处理。TPCThread Per Connectio转载 2014-09-23 11:15:03 · 549 阅读 · 1 评论