想文艺一点的程序员
给学习留点痕迹
展开
-
一、linux中的文件IO
一、文件操作的一般步骤open 一个文件 ——> 得到一个文件描述符 ——> 对该文件进行操作 ——> close文件注:open一个文件时 linux 内核要做的事情:在进程中建立一个打开文件的数据结构,记录我们打开的文件内核在内存当中申请一段内存,将块设备当中静态文件,读取到这段内存当中来存放。我们以后的操作都是基于这个动态文件来进行的,只有最后 close 的时候才会同步到静态文件当中。二、简单的一个文件读写的案例1、man 手册的使用man 1 xx 查l原创 2020-12-31 17:36:40 · 142 阅读 · 0 评论 -
linux 应用编程————二、文件指针,文件共享,标准IO 介绍
一、linux 系统如何管理文件1、 硬盘中的静态文件 和 inode(i节点)扇区(512Byte) 64 或 32-----> 1个块扇区是我们访问硬盘的最小单元。比如 a.txt 只有 3 byte ,这时候也只能放到一个扇区当中。a.txt—3byte , b.txt ----5byte , 这时候该文件也只能被迫分开进行存放到两个扇区当中。举例:压缩包压缩文件夹。 ----- 本质就是将许多小文件变成一个大文件,然后形成一个压缩文件。 文件a和文件b就被放到了一个扇区。问题:原创 2021-01-01 19:25:37 · 211 阅读 · 0 评论 -
linux 应用编程——三、文件属性
一、linux 中各种文件类型1、普通文件( - regular file )文本文件(将 0101 的数字按照一定编码,变得能让人看懂)文件中的内容是由文本构成的,文本指的是ASCII码字符。文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机本身只有0和1),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。常见的有**.c文件、.h文件、.txt文件**等都是文本文件。文本文件的好处就是可以被人轻松读懂和编写。所以说文本文件天生为人类发明的。原创 2021-01-03 16:11:42 · 307 阅读 · 0 评论 -
linux 应用编程—— 四、系统信息的获取
一、linux 系统中的时间1、关于时间的概念1、GMT时间(经度为0 的地区,时区是按照 东西方向划分的)(1)GMT是世界时也就是格林尼治时间,也就是格林尼治地区的当地时间。(2)GMT时间的意义?用格林尼治的当地时间作为全球国际时间,用以描述全球性的事件的时间,方便大家记忆。(3)一般为了方便,一个国家都统一使用一个当地时间(中国是跨越了3个时区)。2、UTC时间(表示 0 时区的时区,东为正,西为负 )(1)GMT时间是以前使用的,近些年来越来越多的使用UTC时间。(2)整个地球分为原创 2021-01-05 01:11:38 · 411 阅读 · 0 评论 -
Linux应用编程——五、进程全解
一、程序的开始和结束1、main 函数由谁来调用?(1)裸机阶段我们在裸机的时候,会有一段汇编用作引导代码。提前配置好C语言的编程环境。(2)操作系统阶段编译器在编译的时候,帮我们添加了引导代码,准确的说是在链接的时候,由链接器将编译器中准备好的引导代码给连接进去。(3)运行程序时候的加载器(./a.out 执行我们可执行程序的时候)加载器是操作系统中的程序,当我们去执行一个程序时(譬如./a.out,譬如代码中用exec族函数来运行)加载器负责将这个程序加载到内存中去执行这个程序。总结:原创 2021-01-08 02:33:11 · 238 阅读 · 0 评论 -
Linux应用编程——五、进程全解(二)
目录一、进程状态和 system 函数1、进程的5种状态2、system 函数 = fork + exec3、进程关系二、守护进程1、什么是守护进程2、编写一个守护进程3、使用 syslog 来记录调试信息一、进程状态和 system 函数1、进程的5种状态(1)就绪态:这个进程所有状态已经准备好了, 就差cpu 来调用。(2)运行态:单核cpu,一个瞬间 只有一个进程在运行。(3)僵尸态:进程已经结束,父进程还没来得及回收。(进程已经结束)(4)等待态:(浅度睡眠&深度睡眠)还在等待原创 2021-01-31 00:49:09 · 149 阅读 · 0 评论 -
Linux应用编程——六、信号
目录一、什么是信号1、信号由谁来发出2、信号由谁处理、如何处理二、常见的信号介绍三、进程对信号的处理1、signal 函数介绍2、sigaction函数介绍四、alarm 和 pause 函数1、alarm函数2、pause 函数一、什么是信号信号是,内容受限的一种异步通信机制。内容受限:信号通信的内容是收到限制的。(只是一个数字编号)异步通信:一个人不涉及同步和异步,只有两个人才涉及。同步有时钟信号,异步没有(1)信号的目的:用来进程之间的通信。(2)信号是异步的(对比硬件中断,按键中断)原创 2021-01-31 23:31:09 · 114 阅读 · 0 评论 -
Linux应用编程——七、高级 IO
目录一、非阻塞式 IO1、阻塞式 IO 和非阻塞式 IO二、阻塞式 IO 的困境1、读取键盘信息2、读取鼠标信息3、读取鼠标键盘的信息三、并发式 IO 的解决方案1、非阻塞式 IO一、非阻塞式 IO1、阻塞式 IO 和非阻塞式 IO(1) 阻塞:阻塞:当前进程的函数缺少某个条件,不能运行。被内核挂起,cpu 去执行其他进程。例如:sleep() , pause 、wait 等函数, read 、和 write 文件的时候,如果不能读,那就先将其阻塞,让 cpu 里面先执行其他函数。阻塞原创 2021-02-01 15:26:22 · 132 阅读 · 0 评论 -
Linux应用编程—— 八、线程全解
一、再论进程1、使用多进程,实现并发处理1、多进程实现同时读取键盘和鼠标#include <stdio.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(void){ // 思路就是创建子进程,然后父子进程中分别进行读键盘和鼠标的工作 int原创 2021-02-04 11:29:07 · 151 阅读 · 0 评论 -
网络编程基础(TCP)
目录一、网络发展和分层1、网络的体系结构2、网络的拆包和分包二、网络预备基础知识1、socket2、IP 地址3、端口号4、字节序三、系统调用分析1、分析 server 部分函数(1)socket 函数的作用:(2)bind 函数的作用:(3)listen 函数:(4)accept 函数(重要)(5)编写程序:2、分析 client 部分(1)connect 函数(2)编写程序四、TCP并发服务器1、多线程大纲分类:一、网络发展和分层Internet 的历史:1、最早是 ARPAnet (阿帕网)原创 2021-09-27 19:25:59 · 2130 阅读 · 1 评论