#basic

散布/聚集 I/O 目的是在单次系统调用(I/O操作)中操作多个缓冲区。按我们平时的读写操作,** read ** 以及 ** write *,都是将数据读入单个缓冲区,从单个缓冲区中写出。 同样也有对应的操作接口: 107 都包含三个参数,fd是需要操作的文件;第二个是iovec结构的数组,即缓冲区,第三个指示数量。 iovec结构 108 用基址和长度来描述一个缓冲区。读入的数据将放入iov_base~iov_base+iov_len这片内存区域中。 segment用来表示一个缓冲区。 * 读操作 *:从文件中读入count个segment到 iov指向的缓冲区数组中。 * 写操作 **;

Read More

简介 本章主要介绍C所提供的标准I/O操作。不同于前面的open只能在Linux上被支持,C标准接口能够在不同系统中被支持。两个基本的概念,关于底层的I/O操作,效率问题。 1. 磁盘,读写最下层就是磁盘的操作。所有的磁盘操作都是基于块进行,这句话的意思就是如果跨越块进行读写会导致效率降低,因此读写请求若选择块大小的整数倍和约数倍的话,就能够保证不会出现跨越块进行读写的问题。 2. 内存,常听到的内存对齐问题。CPU进行读写数的时候,对于32位的机器,一次读取写入4字节,并且是按照起始地址开始的,例如CPU要读取一个值时,它只会从4的倍数的地址进行读写,只会读取0,4,8这些地址(起始地

Read More

概述,也就是简单描述每一章所包含的内容,可以能够快速了解到Linux系统编程中所包含的内容。 简介和主要概念 对应书中的第一章,介绍的是整体内容以及一些概念;整体内容包括文件的操作(I/O); 进程; 内存; 信号; 时间。 文件I/O的概念 如何在程序中访问到文件?通过文件描述符;而通过文件描述符索引到的是一个inode标识,然后通过inode直接关联到实际的文件。但是通过inode来访问对用户来说并不是很方便,毕竟inode只是一个整数值,并不能直观的对应到文件;所以此时就建立了一张表,将文件名和inode进行映射,那么我们就可以通过文件名来访问到inode从而访问到文件了,这就是目录

Read More

按照书籍的简介,对文件I/O的介绍流程为:文件I/O的相关概念、C标准的I/O接口、更高级专门化的I/O接口、文件和目录操作四个部分。 文件I/O基础 这章主要介绍Linux是如何管理文件的读写操作的,从打开文件到文件关闭中途的一系列对文件的操作过程。这里注意的是4点: 1. 文件通过文件描述符来操作,即打开一个文件,就会返回一个文件描述符;然后Linux Kernel为每一个进程维护一张打开文件表,按照文件描述符对打开的文件进行索引。当然最终还是索引到inode。 2. 每个进程一开始启动默认打开的三个文件描述符,0表示标准输入,1表示标准输出,2表示标准错误;因此我们打开一个文件,

Read More

说是Linux系统编程一书的导读,其实只是对Linux系统编程的学习笔记吧。系统编程其实说到底就是借用操作系统所提供的API进行一些底层功能性的操作,并在使用的过程中尽可能去了解其工作的原理。看了一下目录,主要分为以下几个部分: 文件的操作(I/O); 进程; 内存; 信号; 时间。也就主要分为这几个部分来学习学习。尽可能使用简短的语言以及实际的例子来描述。 简介 按照 1.4 Linux编程概念来描述 文件 文件描述符fd,我们平时在使用Linux C的open函数来打开一个文件的时候,就会返回一个整数值; 127 该整数值就是文件描述符了。在使用open打开文件后,就可以通过文件描述符

Read More

在看C++反汇编一书时,在类的一章前面介绍了结构体中变量的内存分配,会遵循一些对齐的原则,导致分配的字节数会有所差异。 那么问题是,为什么要使用内存对齐,以及遵循哪些规则。 为什么内存对齐 这和CPU有关,32位的CPU对应的是一次从内存中读取4字节,并且每次都是从4的倍数的地址开始读。 使用内存对其主要避免的是,本可以一次读取的变量需要两次读取。 假设一个4字节的int型变量,若存储在0x03 - 0x06地址的话,那么需要读取两次,才能取出这个值,先读取0x00-0x03这四个字节,然后再读取0x04-0x07这四个字节,这样会导致读取效率降低;若按照对齐原则,只需将其分配在0x04 -

Read More

git 基础使用 138 git 删除 139 git push到远程git服务器 140 git pull远程代码到本地 141 git 分支管理 git 分支管理基本原则, master分支仅用于实际开发环境的分支, 用于版本的管理和最后的完成版本开发的话, 使用分支develop, 因此保持两个常用分支, master和develop. 若需要调试bug等操作, 设置一个临时的分支, 用完即删除掉即可. 142 git 版本管理 一般版本是在master分支上, 对一个阶段进行版本设定 143 git 版本回退 在一些错误的过程中, 需要将版本回退 144

Read More

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×