- 博客(19)
- 收藏
- 关注
原创 IO
进程创建后,进程进入就绪态,当CPU调度到此进程时进入运行态,当时间片用完时,此进程会进入就绪态,如果此进程正在执行一些IO操作(阻塞操作)会进入阻塞态,完成IO操作(阻塞结束)后又可进入就绪态,等待CPU的调度,当进程运行结束即进入结束态。该类进程经常与用户进行交互,需要等待用户的输入,当接收到用户的输入后,该类进程会立刻响应,典型的交互式进程有:shell命令进程、文本编辑器等。睡眠态(等待态):可中断的睡眠态(S):处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态。
2024-12-11 19:04:38
807
原创 IO
不同的操作系统只要移植了C库就可以使用,它是在系统调用之前做了一个二次封装,相当于是间接的进行了系统调用。应用层读写文件-》调用内核层的函数接口-》与硬件进行交互-》拿到数据返回给应用层的缓存区-》每次读写从缓存区读取。标准IO默认打开三个流:标准输入(stdin),标准输出(stdout),标准出错(stderr)。标准IO由ANSI C标准定义,不仅能在Unix操作系统上,在很多的操作系统上都实现了标准IO。标准IO在系统调用之前作了二次封装增加了缓存机制,减少了系统调用的次数,提高了程序的效率。
2024-12-09 18:47:18
1214
原创 数据结构
什么是数据结构数据的逻辑结构以及存储结构及操作(数据的运算)1.1 数据数据:不再是单纯的数字,而是类似集合的概念数据元素:是数据的基本单位,由若干个数据项组成数据项:数据的最小单位,描述数据元素有用信息数据元素又叫为节点例如:计算机处理的对象(数据)已不再是单纯的数值:图书管理中的数据,如下表所列:12。
2024-11-29 19:15:26
2369
原创 LinuxC高级
core何时生成:当程序出现重大错误时,会生成一个临时的镜像文件,保存程序状态(段错误)方便、扩展性强,只需要一个 test 函数,可以实现不同的功能,这就是"多态"的特性,面向对象三大特性:封装、继承、多态,我只需要一个接口,实现不同功能,就可以简化代码。然后就停在了第5行(实际是从第12行调用的),也就是在add中return的位置。gcc -g xxx.c ---> 生成的文件可以使用gdb调试。n/next:单步调试程序,如果是函数整体执行,不会进入函数内部。
2024-11-27 16:27:24
732
原创 LinuxC高级
获取到 main.c fun.c字符串,根据模式匹配,得到 main.o fun.o 字符串每一个参数之间以逗号作为分隔,要替换的字符串之间以空格作为分隔。遍历当前路径下的文件,如果是普通文件,将文件复制到aa目录下,并计算文件的个数。所以通过 make 工具,可以查找到修改过的文件(根据时间戳),只对修改过的文件进行编议,这样大大的减小的编译时间,提高编译效率。当项目中包含了多个.c文件,但只对其中一个文件进行了修改,那用 gcc 编译会将所有的文件从头到尾编译一遍,这样的效率非常低。
2024-11-26 17:01:50
1225
原创 LinuxC高级
shell中的语句功能性语句testtest 语句可以测试三种对象:字符串 整数 文件属性每种测试对象都有若干测试操作符3.1. 字符串测试s1 = s2 测试两个字符串的内容是否完全一样s1!= s2 测试两个字符串的内容是否有差异-z s1 测试字符串的长度为0-n s1 测试字符串的长度不为03.2. 整数的测试:a -eq b 测试a和b是否相等 equala -ne b 测试a和b是否不相等 not equala -gt b 测试a是否大于b greater than。
2024-11-21 14:44:42
1146
原创 LinuxC语言
shell脚本编程:将shell命令结合一些按照一定逻辑集合到一起,写到一个 .sh 文件,实现一个或多个功能,这个脚本文件不用编译直接执行。首先,从使用的角度讲,两者没有任何区别,都与正常文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。拷贝目录的软连接可以直接拷贝,如果需要拷贝普通文件的软链接文件,需要加上-d保证参数可以存在链接属性。格式:ln -s 被链接的文件(源文件) 生成链接文件(目标文件)硬链接:创建新的硬链接,连接数会增加,删除硬链接,链接数减少。
2024-11-20 19:00:56
1052
原创 LinuxC语言
Ext3、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、ReiserFS、XFS、JFS、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS(New Technology File System)等;指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。sudo userdel -r 用户名 ---> 删除用户的同时,删除用户的主目录。
2024-11-19 20:38:23
910
原创 LinuxC高级
目前几乎所有的Linux系统都支持它。它包括了早期的Bourne Shell和Korn Shell的原始功能,以及某些C Shell脚本语言的特性。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。-------------系统调用----------------------------
2024-11-18 17:21:19
738
原创 C语言基础
创建一个名为student的结构体数组,包含学号,姓名,分数,(数据类型自己定义),从终端输入学生的信息并打印分数及格的学生信息(输入3人即可)。拼接:找目标字符串的\0拼接,将源字符串的第一个字符拼接到目标字符串\0的位置后续以此拼接,也会将\0拼接进入(以\0开头以\0结尾)参数: 1.目标字符串的首地址 2.源字符串的首地址 3.个数。参数:1.字符串的首地址 2.另一个字符串的首地址 3.个数。参数:1.字符串的首地址 2.另一个字符串的首地址。概念:通过自定义的结构提类型定义的变量。
2024-11-14 18:33:47
721
原创 C语言基础(函数)
B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量。D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针。虽然传的是地址,但是本质是值传递,因为函数内改变的是指针变量的值。A) pa是一个指向数组的指针,所指向的数组是5个int型元素。3、栈由系统自动分配,速度较快,而堆一般速度比较慢;C) pa [5]表示某个元素的第5个元素的值。栈是连续的空间,而堆是不连续的空间是随机分配的。(3)栈并非没有限制,大部分栈都有一个上边界。栈获得的空间较小,而堆获得的空间较大;
2024-11-13 18:51:43
1831
原创 C语言基础
A) p+1 :第二行的地址 B) *(p+3) :第4行第一列的地址 C) *(p+1)+3 : 第二行第4列的地址 D) *(p[0]+2)a)*(a[i]+j):第i行j列元素 b)(a+i): 第i行的地址 c)*(a+j) :第j行第一列的地址 d)a[i]+j:第i行j列元素地址。直接访问:a[i][j] *(a[i]+j) *(*(a+i)+j)访问a[1][2]的元素:*(p[1]+2) *(*(p+1)+2)地址:*(p+i)+j p[i]+j & p[i][j]
2024-11-12 17:21:54
1113
原创 C语言基础(指针)
指针的优点:1.使程序更简洁、紧凑、高效 这个有点不算是指针比较鲜明或者独特的点2.有效的表达更复杂的数据结构3.动态分配内存 合理利用空间4.得到多于一个数的函数返回值 容易实现函数的编写和调用。指针概念就是内存地址就是十六进制的编号门牌号)指针变量概念保存指针(地址)的变量格式存储类型数据类型指针变量名;例intp;定义了一个指针变量pinta10;intpa;打印pa的地址。
2024-11-11 20:10:50
938
原创 C语言基础
变量存储类型数据类型变量名例inta;定义时赋值inta10;后续改值:a11;定义后赋值inta;全局:0 局部:随机值a10同时定义多个变量inta,bc;定义了三个int类型变量同时定义多个变量并且赋值:inta=1,b=2,c=3;定义了三个int类型变量a1b2c3分类全局外0整个程序整个程序全局存储区局部内随机值内。
2024-11-06 19:16:54
918
原创 C语言基础
判断switch后面的表达式或者变量的结果,是否和某一个case后面的常量值对应(相等==),如果相等执行对应的语句块,执行完成遇到break结果整个判断,如果和case后面的常量值都不对应则执行default后面的语句块。下面这段代码用来判断一个数的末尾是否为7,如果是输出“yes”,否则打印“no”,其中有5个错误。从终端输入两个数,判断第二个数是不是和第一个数相同,如果是输出“yes”,否则打印“no”八进制 %#o---0开头 %o---直接输出八进制数。
2024-11-05 20:04:47
1736
原创 C语言基础
00000000 00000000 00000000 00000001:最高位为符号位 0:正数 1:负数。5:原码 反码 补码: 00000000 00000000 00000000 00000101。结果 补码:00000000 00000000 00000000 00000100---> 4。5:原码 反码 补码: 00000000 00000000 00000000 00000101。5:原码 反码 补码: 00000000 00000000 00000000 00000101。
2024-11-04 17:00:59
472
原创 C语言基础
先定义变量,执行表达式1,判断表达式2,如果表达式2满足进入循环,执行循环的语句块,执行完成语句块后执行表达式3,再次判断表达式2,如果满足进入循环,执行循环的语句块,执行表达式3,.....如果不满足,跳出循环,结束程序。i=9 s=20+9+1=30 i=11 ---跳出 s=0+2+4+6....10。第一次:i=1 s=0+1+1=2 i=i+2=3。第二次:i=3 s=2+3+1=6 i=i+2=5。第四次:i=7 s=12+7+1=20 i=9。第三次:i=5 s=6+5+1=12 i=7。
2024-10-30 18:58:32
890
原创 C语言基础
命令模式-- a / i / o --->插入模式-- esc -->回到命令模式-- shift+: /空格-->底行模式。机器语言: 二进制 ---> 汇编语言:二进制的文本形式 ----> 高级语言:c c++ (计算机不能直接看懂)拆分法:44---》32+12-->32+8+4--》2^5 +2^3 +2^2--->101100。命令:gcc hell.o -o a.out ---》gcc hello.c--->生成a.out。//定义了一个整形变量 a ---> int a。
2024-10-29 19:10:34
1234
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅