Linux系统编程
Linux系统编程
Mark_404
自由、博爱、专一
展开
-
Linux IO系统编程系列课程笔记之缓冲区
本笔记主要是记录网课的随堂笔记,来加深印象代码详见github全缓冲当缓冲区填满时才调用IO操作对于一些耗时的操作例如对于一些外设(磁盘、网卡)等都采用全缓冲的方式来进行IO系统调用来提高效率。当程序调用flush()函数或者进行到return 时才开始执行IO调用。行缓冲(重要、细节)当操作涉及到终端时(例如:键盘输入【标准输入】、屏幕输出【标准输出】)当填满一行时(填满缓冲区)自动换...原创 2019-06-07 20:51:46 · 260 阅读 · 0 评论 -
Linux IO系统编程系列课程笔记之文件锁
概念目标解决多个进程对同一个文件操作产生的竞争状态解决方案:文件锁按功能分可分为:读锁和写锁读锁文件描述符必须以读的方式打开。一个进程对这个文件设置读锁,其他进程也可以设置读锁,在不改变文件内容的情况下各个进程不存在竞争状态写锁文件描述符必须写打开。一个进程对这个文件设置了写锁,其他进程不能在这个文件上设置读锁和写锁,直至给文件设置写锁的进程解锁,其他进程才可以进...原创 2019-07-05 00:26:34 · 130 阅读 · 0 评论 -
Linux IO 系统编程系列课程笔记之IO处理方式
五种IO模型直接看图注:对于低速系统调用(涉及外部设备例如硬盘、键盘等)相对于CPU运行速度来讲属于低速;因此当进程采用低速系统调用时会出现阻塞现象,可能会使进程永远阻塞的调用常见的例如:scanf函数,如果不输入,进程将永远处于挂起状态。一般的read、write、open函数调用时不阻塞如果操作不能完成则返回阻塞方式和非阻塞方式并不是绝对的;阻塞方式一般采用 两种方式...原创 2019-07-02 23:19:08 · 198 阅读 · 7 评论 -
Linux IO 系统编程系列课程笔记之fcntl函数
简介设置文件状态标志原创 2019-07-01 23:04:58 · 73 阅读 · 2 评论 -
Linux IO系统编程系列课程笔记之文件原子操作
问题将下列程序开两个进程执行#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<string.h>#include<fcntl.h>int main(int argc,char * argv[]){ int fd; if(argc<3) ...原创 2019-06-23 13:54:12 · 197 阅读 · 0 评论 -
Linux IO系统编程系列课程笔记之内核数据结构
一个打开的文件在内核当中的数据结构(三种)1.文件描述符表(进程级)文件描述符标志文件表项指针2.文件表项(系统级)文件状态标志i节点表项指针当前文件偏移量引用计数器3.i节点(文件系统)文件类型和对应的操作函数指针当前文件长度文件所有者文件所在的设备和文件权限指向文件数据在磁盘上的位置指针各打开的文件数据结构之间的关系如图:注:文件描述表是相对于...原创 2019-06-23 00:15:02 · 126 阅读 · 0 评论 -
Linux IO系统编程系列课程笔记之dup和dup2函数
前言在Linux系统中有一种输入和输出重定向例如:cat命令输入端为键盘,输出端为屏幕;我们知道我们可以改变输入端的输入对象和输出端的输出对象例如:1、将某个文件作为输入端:注:在终端采用“<”表示输入重定向,由于cat输出端为屏幕,因此依然会输出到屏幕上。2、将某文件作为输出端:注:在终端采用">“表示输出重定向补充:由于”>“和“<”存在一个问题就是...原创 2019-06-25 23:20:10 · 128 阅读 · 0 评论 -
Linux IO系统编程系列课程笔记之read() 和write() 函数
前言每一个打开的文件都有唯一一个文件指针来记录当前文件数据的位置read函数函数原型 ssize_t read (int fd, void *buff, size_t count) 参数解析: fd: 源文件的描述符 buff:文件内容读取放置的目标位置 count: 期望读到的字节数注:ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与l...原创 2019-06-11 18:06:07 · 336 阅读 · 0 评论 -
Linux IO系统编程系列笔记之lseek()函数
前言lseek函数操作的对象是文件指针,每当打开一个文件都有一个与之相关联的“文件偏移量”它是一个非负整数,我们在此基础上做的 read、write等操作都是针对这个文件偏移量(文件指针)来进行的;系统默认打开一个文件时该文件偏移量初始化为0(即文件指针指向文件开始的位置),除非我们声明O_APPEND参数。函数#include <sys/types.h>#include &l...原创 2019-06-14 22:12:12 · 337 阅读 · 0 评论 -
Linux IO系统编程系列笔记之open create close函数应用
open函数函数功能打开或者创建文件,给定路径如果有指定文件就打开否则就创建所用到的头文件 #include <sys/stat.h> #include<sys/types.h> #include<fcntl.h>注:有的头文件的所在目录不同,一般在 /usr/include/目录下,而该目录又包含好多子目录和文件,例如此处的sys...原创 2019-06-09 00:11:28 · 158 阅读 · 0 评论 -
Linux系统编程系列笔记之文件描述符
定义:对于内核而言,任何对文件的操作都是对文件描述符的引用,它是一个非负整数;例如前三个整数(0,1,2)分别代表(括号里为宏表示):标准输入(STDIN_FILENO),标准输出(STDOUT_FILENO),错误输出(STDERR_FILENO),;而当我们创建一个文件时系统会给我们一个未使用的最小的整数来引用文件,该整数大小为0~OPEN_MAX在Linux中为1024,即可以同时打开...原创 2019-06-07 22:43:42 · 142 阅读 · 0 评论 -
文件属性及其操作
stat结构体:操作函数注:stat()函数传入文件的路径,返回的信息放在buff指针指向的区域内fstat() 函数传入的是当前进程打开的文件的描述符lstat()函数第一个参数为软链接文件路径,给出的信息只是软链接文件的信息而非所链接的文件的信息和文件类型相关的七种宏和七种文件...原创 2019-07-24 00:56:23 · 161 阅读 · 0 评论