- 博客(17)
- 收藏
- 关注
原创 # 进程与多任务编程详解
i++) { // 创建3个子进程。| 状态 | 符号 | 说明 || 睡眠 | S | 可中断等待 || 停止 | T | 被信号暂停 || 堆区 | // malloc动态分配。| 栈区 | // 自动变量、函数调用。| 运行 | R | 正在执行或就绪 || 已初始化数据 | // 初始化的全局/静态变量。
2025-02-21 21:13:07
239
原创 # 深入理解Linux进程与多任务编程
堆(Heap) | 动态分配的内存区域 || BSS段 | 未初始化的全局/静态变量 || 栈(Stack) | 函数调用时的临时数据存储 || 数据段(data) | 已初始化的全局/静态变量 |- **进程**:程序被加载到内存中执行的动态实例(如运行中的QQ)- **孤儿进程**:父进程先于子进程终止,由init进程接管。// 确保子进程先执行。- **僵尸进程**:子进程终止但未被父进程回收。
2025-02-19 21:39:59
795
原创 # Linux系统信息提取与文件操作函数详解
通过合理使用系统提供的函数,可以方便地获取用户/组信息、操作文件链接,并有效处理程序中的错误。// 组成员列表(以NULL结尾)char *pw_passwd;// 用户密码(通常为'x')**功能**:根据用户ID从`/etc/passwd`文件中获取用户信息。// 用户默认Shell。// 组密码(通常为空)// 用户全名或注释。**功能**:根据组ID从`/etc/group`获取组信息。**功能**:根据用户名获取用户信息。
2025-02-17 20:06:31
359
原创 # 深入理解文件I/O操作:从标准库到系统调用的细节
**标准I/O**使用文件指针(`FILE *`)和库函数,提供缓冲机制,操作更为便捷,适用于大部分文本操作。`lseek`与标准库的`fseek`和`ftell`提供了灵活的定位功能。- `write`:将`buf`中的数据写入文件描述符`fd`,返回成功写入的字节数。- `read`:从文件描述符`fd`中读取数据到`buf`,返回成功读取的字节数。与 `open`相比,`fopen`更为友好,适于文本文件操作。成功时返回`FILE *`指针,失败则返回`NULL`。
2025-02-16 21:38:21
331
原创 Linux文件操作
标准 I/O 库(`stdio`)作为 C 语言的核心部分,提供了高效、易用的文件操作接口。而标准 I/O 库(`stdio`)作为 C 语言中处理文件输入输出的强大工具,更是跨平台编程中不可或缺的一部分。• 库函数:由第三方提供,例如标准 I/O 库(`stdio`)中的`fopen`、`fread`、`fwrite`等。// 打开文件,可读写。• 系统调用:由内核直接提供,例如`open`、`read`、`write`等。• `mode`:打开模式(例如`"r"`表示只读,`"w"`表示写入)。
2025-02-14 09:16:48
276
原创 # Shell编程详解:从基础到条件控制
$n | 第n个参数(n>9需用${n}) | $1=a, ${10}=第10个参数 || [[ ]]扩展 | 支持正则匹配 | [[ $str == *.txt ]] || "" | 解析变量和命令替换 | echo "现在时间:`date`" || '' | 完全字面输出 | echo '$PATH 显示$PATH' || -S | 套接字文件 | /var/run/docker.sock || $@ | 所有参数保持独立状态 | "a" "b" "c" |
2025-02-13 09:16:56
517
原创 共用体、枚举与位运算
在上述例子中,如果 int 占4字节, float 占4字节, char[4] 也占4字节,那么 union SharedData 的大小就是4字节。在C语言的奇妙世界里,共用体、枚举和位运算犹如三把独特的钥匙,各自解锁着不同的编程领域,为开发者提供了强大的工具。本质类型:枚举类型本质上是用 int 型数据表示的,默认情况下, Sun 的值为0, Mon 为1,以此类推。成员访问:共用体成员的访问方式和结构体一样,使用点运算符( . )或箭头运算符( -> )。例如,通过位运算来设置或读取寄存器的特定位。
2025-02-11 01:41:27
240
原创 C语言结构体:处理复杂数据的利器
结构体是C语言中一个强大的工具,它允许我们将不同类型的数据组合成一个有机的整体,方便对复杂数据的管理和操作。我们熟知的基本数据类型,如整型、浮点型和字符型,如同基础砖块,而构造类型则像是更为复杂的预制件,让我们能够搭建出更复杂的结构。注意, free 函数的参数必须是之前申请到的堆区内存空间的地址,释放后应将对应的指针变量设置为 NULL ,防止悬空指针的产生,同时要避免对同一块空间多次 free。结构体对齐的目的是为了提高内存访问效率,虽然会在一定程度上浪费一些内存空间,但换来的是程序性能的提升。
2025-02-09 17:04:08
650
原创 C语言预处理
add.h 中通常包含对外的函数声明以及 add.c 需要用到的头文件等内容, main.c 通过 #include "add.h" 来引入 add.c 中定义的函数,从而实现代码的模块化和复用。例如 #define SQUARE(x) x * x ,当使用 SQUARE(3 + 2) 时,会被替换为 3 + 2 * 3 + 2 ,结果并非预期的 (3 + 2) * (3 + 2) ,所以能加括号的地方尽量都加括号。在程序中,所有出现 N 的地方都会在预处理阶段被替换为100。
2025-02-08 09:09:03
405
原创 深入理解C语言函数:定义、调用与设计
4. main函数:是程序的入口函数,从调用关系上看, main 函数是主调函数,其它函数是被调函数。4. 输入年份和月份,打印对应月份的天数:编写函数,接收年份和月份作为参数,根据闰年规则判断并打印出对应月份的天数。,将函数的返回值作为表达式的一部分进行计算。2. 输入一个数,判断是不是素数:编写函数,接收一个整数,通过循环判断该数是否为素数,并输出相应结果。3. 打印100以内所有的素数:定义函数,通过循环调用判断素数的函数,打印出100以内的所有素数。,这种方式只执行函数的操作,不使用函数的返回值。
2025-01-20 21:36:32
588
原创 二维数组与字符串
实际上,C语言中并不存在真正的二维数组,二维数组本质上是一维数组的一维数组。可以看到,charch[]={'h','e','l','l','o'};这两种方式都可以定义字符数组,但后者会自动在末尾添加结束标志\0,即'h','e','l','l','o',0,0,0,0,0。例如,charch[10]={'h','e','l','l','o'};需要注意的是,在初始化时,二维数组的行数可以省略,但列数不能省略,例如inta[][4]={1,2,3,4};
2025-01-19 21:36:49
465
原创 理解C语言数组与排序算法
在识别数据类型时,以intscore[30]为例,去掉score后,int[30]就是该数组的数据类型,它表示能存放30个int型变量的一类数据。,a代表的数组类型是int[10],其值为数组首元素的地址,即&a[0]。具体来说,在每一轮排序中,从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。1.思想:冒泡排序的思路是让相邻的两个元素两两比较,根据比较结果将小的元素放在前面,大的元素放在后面。
2025-01-17 21:27:01
535
原创 流程控制:选择和循环
case 常量表达式1: //case 后面的表达式 必须是一个 整型的常量表达式 不能有变量。switch (表达式) //表达式 必须是一个整型表达式。switch // 表达式 通常是要计算出一个数值。使循环趋于结束的语句(操作))if // 表达式 通常是一个判断条件。do-while //先做 后判断。for( 表达式1;表示跳过本次循环,继续下一次循环。while //条件。3.使循环趋于结束的语句(操作)}while(表达式);
2025-01-16 21:52:17
606
原创 C语言的输入输出
e -- 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0。%X -- 转换为 十六进制形式 输出 输出结果中字符 都是大写形式。%g -- 以一种 更简洁的方式输出 ,不会将多余0输出。%f -- 转换为 小数形式输出,默认保留 6位 小数。%c -- 转换为 数值 对应 字符形式 输出。%d -- 转换为 有符号 十进制形式 输出。%s -- 以字符串的形式(一串字符)输出。gets / puts (字符串的输入输出---数组)
2025-01-15 19:49:12
724
原创 c语言操作符
左值 能够放在 = 左边的 称为 左值 --- 变量。3.求余运算的结果的符号 取决于 左操作数。1.如果是两个整型数 相除 效果相当于是整除。参与到别的运算中时,此时运算规则发挥作用。编译时 出错 --- 语法问题。运行时 出错 --- 逻辑问题。1.求余运算的运算数 必须是 整型。1. 运算规则 ,单独使用时,没区别。3.除法运算 的 被除数不能为 0。2.被(除)操作数 不能为 0。2. 运算数必须是个左值。++a //前置++a++ //后置++% 求余。
2025-01-14 20:52:26
247
原创 C语言数据类型(1)
int //整型 4字节。long //长整型 8字节。long long //长长整型 8字节。float //单精度浮点类型 4字节。double //双精度浮点类型 8字节。step1: 将十进制形式的小数 转换为 二进制形式的小数。'a' ---编码值----存到计算机。
2025-01-13 20:05:33
196
原创 嵌入式基础
pwd 显示路径 cp复制 mv移动。touch 创建文件 mkdir 创建目录。ls 罗列指定目录下内容 cd 切换目录。插入模式,按insert插入文本,按ESC退出。普通模式:默认模式,用于执行命令。rm删除 ctrl+l清屏。命令模式 按:输入命令。:wq 保存并退出。
2025-01-12 21:27:39
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人