- 博客(13)
- 收藏
- 关注
原创 Linux 文件(2) 文件 fd
在系统调用中经常能看到 file descriptor (fd) 这样类型的参数。这个 fd 被称为文件描述符。文件描述符是一个 int 类型的变量。我们能使用下面的代码看到我们进程每个文件的文件描述符。使用 sprintf 函数格式化缓冲区字符数组 namebuffer,并使用字符数组 name-buffer 新建不同的文件。可以看到进程(bash进程)的文件 fd 从 3 开始不断增加。这里就出现了两个问题:1.为什么进程的文件 fd 是从3开始的?
2024-10-14 21:49:46
351
原创 宏的初步认识
使用宏,为了增加程序的可读性。也为了便于用户使用。为了让使用者可以组合的使用不同的宏标志位。宏标志位的二进制表示可以设计成 “只有一位是1,其他位都是0的形式” ,这样才能组合的去使用。(32位系统,每一位可以表示成一个宏)
2024-10-13 15:15:49
374
原创 const char* str 、char const* str、 char* const str 三者的区别
在 Linux 的学习过程中,碰到很多次形参类型为 char* const str 或者 const char* str 的,一直没有搞懂这三者的区别。因此今天特地去学习了下。
2024-10-11 15:54:55
373
原创 Linux进程(3) 进程控制
在学习进程等待操作之前,需要理解的是:为什么要进行进程等待?之前在 “进程基本概念” 一章中,介绍了进程会处于僵尸状态Z。僵尸状态就是一个子进程运行完成之后,子进程的代码和数据从内存中退出了,但是子进程的 PCB 还留在内存里。这种状态就是进程的僵尸状态。为什么需要有进程的僵尸状态?因为一个子进程执行完,父进程需要知道子进程的部分信息:比如子进程是否执行成功?如果执行成功,执行结果是否正确?这些信息会在子进程执行结束后保存在子进程的PCB结构体中。
2024-10-10 21:25:58
1671
原创 Linux 进程(1) 进程基本概念
由于前置知识的缺失,上来就去了解进程的概念是非常困难的。因此我先从体系结构方面对硬件和软件进行了一定程度的认识。首先是冯 诺依曼体系结构的基础认知。有些资料把内存归为CPU一类,有些资料把内存从CPU独立开,这里我的CPU是指运算器和控制器构成的CPU内核。外设指的是除了CPU以外的硬件。包括输入设备、输出设备和外存储器。(这里只画了数据逻辑关系,不包含控制)Q:为什么CPU不能直接读取外存储器(就是c盘d盘里的程序)运行呢?A:因为CPU速度很快,而外存储器速度很慢。
2024-10-08 15:04:01
1316
原创 【无标题】
动态库 静态库注意在使用 ./ 指令时后面不能跟空格。对目录下的 test.c 文件进行执行,发现 test.c 文件执行报错了。原因是 test.c 文件不是可执行文件。执行当前目录下的某个文件。前提是该文件(代码)是经过预处理—编译—汇编—链接后的可执行文件,才能被执行。因此可以使用 gcc 对文件进行执行操作。生成可执行文件后再使用 ./ 指令执行。可以看到生成的 my_test 可执行文件已经被执行了。使用 file 命令查看 test.c 和 my_test 对应的文件类型。
2024-10-08 15:03:14
393
原创 Linux权限
文件权限:owner other grouper文件 = 文件内容 + 文件属性文件权限 = 人 + 文件属性linux文件类型:第一个字符表示,而非后缀。后缀只是文件名的一部分。linux文件类型:第二个字符表示,读、写、执行三个权限,三三为一组,有权限显示对应字符 w r x,无权限显示 -拥有者 所属组 其他人是if else if else的关系假设有个文件的前缀是 d-w-rwxrwx ,该文件的用户和所属组是同一个人,但是用户不能对其进行读操作。
2024-10-08 15:02:44
599
原创 24.09.20 子数组和子序列的动态规划模版(2)
子数组问题和子序列问题不同。根据以往的经验,子数组问题的状态表示一般表示为:dp[i],以i结尾的子数组,怎么怎么样(和子序列不同,子序列是以i结尾所包含的子序列)。因此根据经验可以较快的确定这道题的状态表示。根据经验,子序列问题的状态表示一般表示为:dp[i],以i结尾的子序列,怎么怎么样。根据经验确定状态表示。下面就是根据状态表示推导状态转移方程了。初始化dp表直接根据状态转移方程来。无需初始化,让他默认等于0就可以。本质还是两个数组dp、子数组、子序列问题的杂交题。推导状态表示和状态转移方程就不难。
2024-10-08 15:02:12
175
原创 Linux 环境变量
再回答第二个问题:操作系统在安装的时候,会把(指令的位置、动静态库)放到自己的配置文件中。操作系统在启动的时候,会把(指令的位置、动静态库)这些配置文件的内容加载到内存里形成一个变量,就是环境变量。因此,执行 ls 指令时会有一个环境变量 PATH 帮你从系统规定好的路径找 ls 命令对应的二进制代码。先回答第一个问题:你的可执行程序想要运行,需要经由操作系统加载到内存里,再由CPU执行。因此你需要输入 ./(.代表当前地址) + test2 告诉操作系统你的程序在哪个目录下什么位置。
2024-10-08 15:00:42
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅