文件描述符   当应用程序请求打开或者操作文件时,操作系统为应用程序设置一张文件列表,具体的实现形式此处不深入说明 操作系统会提供给你一个非负整数,作为一个索引号,它的作用就像地址或者说指针或者说偏移量 这个索引号就用来定位文件数据在内存中的位置. 这个概念在类Unix系统叫做文件描述符, linux把所有东西都被看成是文件,比如文件.目录.进程.网络socket.各种硬件设备等 这个概念在Windows下 称之为句柄, 句柄是Windows下各种对象的标识符, 比如文件.资源.菜单.光标.位图…
针对下文的总结:socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用:open,socket,pipe 返回的都是一个描述符.不同的进程中,他们返回的描述符可以相同.那么,在同一个进程中,他们可以相同吗?或者说,普通文件.套接字和管道,这三者的描述符属于同一个集合吗? 在内核源码中,三个系统调用声明如下: SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode); SY…
第1节 理解终端设备tty.pty.pts概念 简要描述: 终端设备默认具有输入.输出功能. 现代我们最常用的接入服务器端的方式(如:ssh通过tcp/ip的方式连接服务器端,作为服务器的终端设备)为服务的接入方式. 但服务器端默认的连接终端为tty模式,(是以串口设备的接入方式,如我们的键盘.显示器),服务器默认提供tty1...tty6共6个终端接口,用Ctrl+Alt+F1...F6切换. 所以在ssh通过tcp/ip连接服务器端的时候,服务器系统会将该服务转换为ptmx设备形态(可以理解…
1.对重定向的理解 2.硬件设备和文件描述符 文件描述符到底是什么 3.Linux Shell 输出重定向 4.Linux Shell 输入重定向 5.结合Linux文件描述符谈重定向 6.Shell 对文件描述符的操作 7.改变当前shell环境的重定向目标 8.示例 1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入方向是指数据从键盘流向程序,…
17.8 稀疏调拨的内存映射文件 17.8.1 稀疏文件简介 (1)稀疏文件(Sparse File):指的是文件中出现大量的0数据,这些数据对我们用处不大,但是却一样的占用空间.NTFS文件系统对此进行了优化,那些无用的0字节被用一定的算法压缩起来.例如声明一个很大的稀疏文件(如100GB),这个文件实际上并不需要占用那么大的空,内部都是一些无用的0数据,那么NTFS就会利用算法释放这些无用的0字节空间,这是对磁盘占用空间的一种优化.但要注意FAT32并不支持稀疏文件的压缩. (2)与稀疏文件…
6. 文件传输协议FTP 6.1 FTP主动和被动模式 (1)FTP协议 ①与其他协议不同,FTP协议在客户端访问FTP服务器时需要建立两个TCP连接.一个用来传输FTP命令,一个用来传输数据. ②在FTP服务器上需要开放两个端口,一个命令端口(或称为控制端口)和一个数据端口.通常命令端口为21,数据端口为20.当考虑主动/被动模式时,数据端口可能不是20. (2)主动模式(建立传输数据的TCP连接由FTP服务器主动发起) ①工作过程 A.第1步中,FTP客户端提交PORT命令并允许服务器来回连…
2. 文件I/O系统调用及文件描述符 2.1 文件I/O系统调用 (1)主要函数 函数 功能 函数 功能 open() 打开文件 read() 读取文件 creat() 创建文件 write() 写入文件 close() 关闭文件 lseek() 文件定位 注意 这些不带缓存的函数都是内核提供的系统调用.它们不是ANSI C的组成部分,但是POSIX的组成部分 (2)系统调用与C库 (3)文件操作方式 ①标准库函数:遵守ISO标准,基于流的I/O,对文件指针(FILE结构体)进行操作. ②系统调…
一篇关于Asp.Net Web Api下载文件的文章,之前我也写过类似的文章,请见:<ASP.NET(C#) Web Api通过文件流下载文件到本地实例>本文以这篇文章的基础,提供了ByteArrayContent的下载以及在下载多个文件时实现在服务器对多文件进行压缩打包后下载的功能.关于本文中实现的在服务器端用.NET压缩打包文件功能的过程中,使用到了一个第方类库:DotNetZip,具体的使用将在正文中涉及.好了,描述了这么多前言,下面我们进入本文示例的正文. 一.创建项目 1.1 首先创…
================ 文件内容列传行_行转列  ================ 一.列转行 1.编辑测试文件 vi log.txt 16:23:00 8.2% 1773620k 16:23:01 3% 1770024k 16:23:02 5.7% 1766272k 16:23:03 4% 1766160k 16:23:04 7.9% 1775436k 16:23:05 2.5% 1775488k 16:23:06 3.9% 1770340k2.编辑列转行脚本 vi colline.…
java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符 - void write(char[] cbuf)写入字符数组 - abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数 - void write(String str)写入字符串 - void write(String str…