• 欢迎访问BruceOu的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏本章吧

标签:Linux高级编程

《Linux – Linux高级编程 – 第三部分 网络编程》第3章 Socket网络编程

3.1 Socket网络编程基础 3.1.1套接字概述 套接字就是网络编程的ID。网络通信,归根到底还是进程间的通信(不同计算机上的进程间的通信)。在网络中,每一个节点(计算机或路由器)都有一个网络地址,也就是IP地址,两个进程通信时,首先要确定各自所在网络节点的网络地址。但是,网络地址只能确定进程所在的计算机,而一台计算机上很可能同时运行着多个进程,所以……

《Linux – Linux高级编程 – 第三部分 网络编程》第2章 TCP/IP讲解

2.1 TCP/IP 数据包格式解析 TCP/IP 数据包格式解析如下所示: 图1 图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。 橙色的是数据链路层的头部,一共14字节 蓝色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 橙色部分:链路层 目的MAC:当前step目的主机的mac地址 源MA……

《Linux – Linux高级编程 – 第三部分 网络编程》第1章 网络基础知识

1.1 OSI模型和TCP/IP 模型 网络体系结构指的是网络的分层结构以及每层使用的协议的集合。其中最著名的就是OSI协议参考模型,他是基于国际标准化组织(OSI)的建议发展起来的。它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。 图1 这个7层的协议模型规定的非常细致和完善,但在实际中没有被广泛的使用,其中最重要的原因之一……

《Linux – Linux高级编程 – 第二部分 进程与线程》第4章 守护进程详解

4.1守护进程概述 4.1.1守护进程的概念 Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的;同时,守护进程还能完成许多系统任务。常见的守护……

《Linux – Linux高级编程 – 第二部分 进程与线程》第3章 进程间通信(IPC通信)

3.3 IPC 机制 在前面,我们学习了传统的进程间通信方式——无名管道(pipe)、有名管道(fifo)和信号(signal)。接下来看看更高级别的进程间通信(Inter-Process Communication, 简称IPC)。 1.共享内存(share memory); 2.信号灯(semaohore); 3.消息队列(message queue)……

《Linux – Linux高级编程 – 第二部分 进程与线程》第3章 进程间通信(信号通信)

3.2信号通信 信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的:一个进程不必通过任何操作在等待信号的到达。 事实上,进程也不知道信号到底什么时候到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了那些系统事件。它可以在任何时候发给某一……

《Linux – Linux高级编程 – 第二部分 进程与线程》第3章 进程间通信(管道)

3.1管道通信 管道是Linux 中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入,Linux 的管道主要包括两种:无名管道和有名管道。 3.1.1无名管道 无名管道是Linux中管道通信的一种原始方法,他有如下特点: 1)只能用于具有亲缘关系的进程之间的通信(也就是父子进程或兄弟进程之间,用fork()创建的子进程); 2)……

《Linux – Linux高级编程 – 第二部分 进程与线程》第2章 线程(四)

4 多线程经典问题(生产者-消费者) “生产者——消费者”问题是Linux多线程编程中的经典问题,主要是利用信号量处理线程间的同步和互斥问题。 “生产者——消费者”问题描述如下: 有一个有限缓冲区(这里用有名管道实现 FIFO 式缓冲区)和两个线程:生产者和消费者,它们分别不停地把产品放入缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者在缓……

《Linux – Linux高级编程 – 第二部分 进程与线程》第2章 线程(三)

3 线程高级属性 3.1 线程一次性初始化 有些事需要且只能执行一次(比如互斥量初始化)。通常当初始化应用程序时,可以比较容易地将其放在main函数中。 但当你写一个库函数时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始(pthread_once_t)会比较容易些。 首先要定义一个pthread_once_t变量,这个变量要用宏PTHR……

《Linux – Linux高级编程 – 第二部分 进程与线程》第2章 线程(二)

2 线程同步与互斥 先来了解同步和互斥的基本概念: 临界资源:某些资源来说,其在同一时间只能被一段机器指令序列所占用。这些一次只能被一段指令序列所占用的资源就是所谓的临界资源。 临界区:对于临界资源的访问,必须是互斥进行。也就是当临界资源被一个指令序列占用时,另一个需要访问相同临界资源的指令序列就不能被执行。指令序列不能执行的实际意思就是其所在的进程/线程……