本章节继续介绍关于Linux系统下信号相关的知识点,介于之前介绍了信号的基础,了解了信号的产生、缘由以及工作流程,这里就对信号的相关函数进行统一的分析,之后在用实例进行说明。
Linux系统编程之信号基础
Linux下信号涉及知识点非常多,本章节先做一个铺垫,简单介绍一下信号种类及其含义,信号的几种默认处理方式等,后续再来介绍具体的信号处理函数以及注意事项也就方便很多了。工欲善其事,必先利其器。Let us get it!
Linux系统编程之静态/动态库生成实战
本节就如何创建和使用程序库进行论述。所谓” 程序库”,简单说,就 是包含了数据和执行码的文件。其不能单独执行,可以作为其它执行程序的一部分来完成某些功能。库的存在,可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。程序库可分静态库 (static library) 和共享库 (shared object)。
Linux系统编程之进程间通信
之前文件介绍了Linux下进程的创建,执行以及回收,此章节就进程间通信进行详细介绍。Linux提供了多种进程间通信机制,本文会分别介绍匿名管道pipe,有名管道fifo,内存共享映射机制以及Socket套接字等。通过其中任意一种机制,都能够方便两个进程间进行通信操作,极大方便开发者的开发效率。
Linux系统编程之进程
学习Linux中的进程,主要设计了三个重要的函数:fork(创建子进程),exec(执行命令),wait(回收进程资源)。进程的管理由内核中的task_struct结构体(PCB进程控制块)负责,下面我们来具体了解一下。
Linux系统编程之文件IO进阶
文章概括描述文段
上篇文章中介绍了linux中基本的io处理操作,对于一般的文件读取是没有问题的,但是考虑到终端以及网络等可能存在阻塞情况下,这时候就需要我们使用标志位 O_NONBLOCK 。其次,对于文件的阻塞和非阻塞操作,如果是一个已经打开的文件呢又该如何操作,fcntl 便应运而生了。
Linux系统编程之文件IO
在Linux系统中,一切皆是文件。文件相当于操作系统和设备之间的一架桥梁。程序可以像使用文件那样访问磁盘文件,串行口,打印机等其他设备。通常情况下,我们可以通过以下5个函数,即可操作众多设备:open、close、read、write和ioctl。例外的情况: 目录的读写,网络连接等特殊文件
源码分析之存储系统启动流程MountService模块
上篇我们介绍了Android的存储系统中native层的Vold的启动流程,Vold在init进程中通过init脚本进行启动,而MountService则是在Java的服务总站SystemServer中配置启动的,下面我们就来看一下Java层的MountService是如何启动的。
源码分析之存储系统启动流程Vold
Android的存储系统相对来讲还是比较复杂,其中主要包括了native层的Vold以及Java层的MountService。其中Vold在init进程中通过init脚本进行启动,而MountService则是在Java的服务总站SystemServer中配置启动的。它们之间的通信采用的Socket进行,而不是Binder机制,其主要的原因就是架构上比较简单,代码量也少。本文就从启动流程上分析安卓系统中的存储模块是如何加载起来的,下面就让我们直接进入正题。
Android系统HAL层驱动开发实战
基于Android HAL层驱动框架,开发者很容易将自己的驱动实现在用户空间,实现驱动细节的隐藏,而不必在内核中进行修改,避免因修改内核,公开源码进而损害自己的商业利益。本章节,我们就对HAL层驱动框架进行实现,由底层驱动到中间层framework,继而进入上层应用端,彻底完成上层应用到底层驱动的一一实现。