自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

转载 Linux进程间通信(二)---管道通信之无名管道及其基础实验

管道简介   管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入(其实我更愿意将管道比喻为农村浇地的管子)。Linux的管道主要包括两种:无名管道和有名管道。这一节主要讲无名管道,首先介绍一下这两个管道。(特点很重要啊!)1、无名管道   无名管道是Linux中管道通信的一种原始方法,如图一(左)所示,它具有以下特点:   ①  它

2013-06-30 16:16:38 748

转载 Linux进程间通信(一)---进程间通信概述及其种类

为什么会有进程间通信?   我们应该都知道了,进程是一个程序的一次执行,是系统资源分配的最小单元。这里所说的进程一般是指运行在用户态的进程,而由于处于用户态的不同进程间是彼此隔离的,但是它们很可能需要相互发送一些信息,好让对方知道自己的进度等情况,像这样进程间传递信息就叫进程间通信。进程间通信方式有几种?  就像处于不同城市的人之间的通信方式有手机、电脑等方式一样,进程间通

2013-06-30 16:14:31 547

转载 Linux多任务编程(六)---编写多进程程序及其代码

实验目的   通过编写多进程程序,熟练掌握fork()、exec()、wait()和waitpid()等函数的使用,进一步理解在Linux中多进程编程的步骤。实验内容   该实验有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s后异常退出。父进程先用阻塞方式等待第一个进程的结束,然后用非阻塞方式等待另一

2013-06-30 16:13:26 1656 1

转载 Linux多任务编程(五)---wait()、waitpid()函数及其基础实验

wait()和waitpid()函数说明   wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。   waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若

2013-06-30 16:08:50 1000

转载 Linux多任务编程(四)---exit()函数及其基础实验

exit()和_exit()函数函数说明   创建进程使用fork()函数,执行进程使用exec函数族,终止进程则使用exit()和_exit()函数。当进程执行到exit()或_exit()函数时,进程会无条件的停止剩下的所有操作,清除各种数据结构,并终止本进程的运行。但是,这两个函数还是有区别的,其调用过程如图1所示:          从图1可以看出,_exi

2013-06-30 16:04:14 571

转载 Linux多任务编程(三)---exec函数族及其基础实验

exec函数族函数族说明  fork() 函数用于创建一个新的子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的子进程如何执行呢?exec 函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执

2013-06-30 16:03:59 590

转载 Linux多任务编程(二)---fork()函数及其基础实验

fork()函数     在 Linux 中创建一个新进程的唯一方法是使用fork()函数。fork()函数是 Linux 系统中一个非常重要的函数,和咱们以前遇到过的函数由一些区别,因为它看起来执行一次却返回两个值,这又作何解释?不着急,慢慢看。函数说明   fork()函数用于从已存在的一个进程中创建一个新的进程,新进程称为子进程,而原进程称为父进程。使用fork()函

2013-06-30 16:03:23 636

转载 Linux多任务编程(一)---任务、进程、线程

Linux下多任务介绍  首先,先简单的介绍一下什么叫多任务系统?任务、进程、线程分别是什么?它们之间的区别是什么?,从而可以宏观的了解一下这三者,然后再针对每一个仔细的讲解。   什么叫多任务系统?多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。   任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。

2013-06-30 16:01:30 592

转载 Linux多任务编程(七)---Linux守护进程及其基础实验

守护进程概述   守护进程,又叫daemon进程(不知怎的,我突然想起来吸血鬼日记中的达蒙了,很好看的美剧),是Linux中的后台服务进程。他是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或者等待处理某些发生的事件。守护进程常常在系统引导载入时启动,在系统关闭时终止。Linux有很多系统哦服务,大多数服务都是通过守护进程实现的。同时,守护进程还能完成许多系统任务,例如,

2013-06-30 12:57:15 585

转载 内 存 编 程

1. 内存分配方式1.1 内存分配的几种方式(1)  从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。(2)  在栈上创建。在执行函数时,函数的参数值,内局部变量的存储单元都可以在栈上创建。函数执行结束时

2013-06-30 12:50:24 760

转载 C++内存管理

C++内存管理 [导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放

2013-06-30 12:49:37 956

转载 关于同步、异步,阻塞、非阻塞的解释

在windows socket api 下:异步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而同步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。阻塞套接字是指执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直挂在recv()这个函数调用上,直到读到一些数据

2013-06-30 12:47:52 1103

转载 网络socket编程指南

eej网络socket编程指南 -------------------------------------------------------------------------------- 介绍   Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知

2013-06-30 12:46:52 773

转载 Select()系统调用及文件描述符集fd_set的应用

在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。select()的调用形式为:#include #include int select(

2013-06-30 12:40:18 532

转载 unix 多进程下的生产者和消费者实现

#include#include#include#include#include #include#include#include #includetypedef struct{        int buf[129];        int occupied;        int nextin;        int nextout;

2013-06-30 12:37:11 699

转载 网络编程中参数的获得与设置

取得本地主机名: int gethostname(char *hostname, size_t size); 获得主机名存到hostname中。   取得本地的信息: int getsockname(int sockfd, struct sockaddr *addr, int *addrlen); addr存有返回的主机信息。 示例:

2013-06-30 12:35:59 724

转载 系统设计之 网络模型(三)多路复用模型

多路复用的方式是真正实用的服务器程序,非多路复用的网络程序只能作为学习或着陪测的角色。本文说下个人接触过的多路复用函数: select/poll/epoll/port。kqueue的*nix系统没接触过,估计熟悉了上面四种,kqueue也只是需要熟悉一下而已。一、select模型select原型:int select(int n, fd_set *readfds, fd_set *

2013-06-30 12:34:40 689

转载 系统设计之 网络模型(二)

本章主要列举服务器程序的各种网络模型,示例程序以及性能对比后面再写。一、分类依据。服务器的网络模型分类主要依据以下几点(1)是否阻塞方式处理请求,是否多路复用,使用哪种多路复用函数(2)是否多线程,多线程间如何组织(3)是否多进程,多进程的切入点一般都是accept函数前二、分类。首先根据是否多路复用分为三大类:(1)阻塞式模型(2)多路复用模型(3)实时信号模型

2013-06-30 12:33:43 701

转载 系统设计之 网络模型(一)基础篇

全文针对linux环境。tcp/udp两种server种,tcp相对较复杂也相对比较常用。本文就从tcp server开始讲起。先从基本说起,看一个单线程的网络模型,处理流程如下:socket-->bind-->listen-->[accept-->read-->write-->close]-->close[]中代码循环运行,[]外的是对监听socket的处理,[]内的是对acce

2013-06-30 12:33:04 686

转载 Linux程序设计入门 - fork, pthread, and signals

在UNIX程序设计中,学会fork及signal的运用,算是相当基本的功夫。        fork()及在UNIX程序设计中,学会fork及signal的运用,算是相当基本的功夫。        fork()及signal经常运用在daemon守护神这一类常驻程序,另外像      a4c.tty/yact/chdrv这些中文终端机程序也有用到,一般如

2013-06-30 12:31:38 901

转载 Linux中TCP连接过程状态简介

一、Linux服务器上11种网络连接状态:      图:TCP的状态机通常情况下,一个正常的TCP连接,都会有三个阶段:1、TCP三次握手; 2、数据传送; 3、TCP四次挥手注:以下说明最好能结合”图:TCP的状态机”来理解。SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一

2013-06-24 21:30:22 683

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除