- 博客(23)
- 收藏
- 关注
原创 【Linux】fork和exec中的信号继承探索
本文主要探讨了Linux系统中fork和exec系统调用对信号处理的影响。首先,文章指出,在fork时,子进程会继承父进程的信号处理方式,包括信号的默认处理(SIG_DFL)、忽略(SIG_IGN)或自定义处理函数。然而,在exec之后,只有设置为忽略或默认行为的信号会被保留,自定义的信号处理函数则不会被继承,因为exec会替换进程的上下文,包括之前定义的函数地址。
2024-05-20 00:03:41
817
原创 【C++】extern “C“ 和 extern 深度探索
本文介绍了C和C++中extern关键字的用法及其在链接阶段的作用。extern用于声明在其他文件中定义的全局变量或函数,实现跨文件共享。extern "C"则是C++特有的用法,用于指示编译器按照C语言的链接规则处理代码,解决C++与C语言的链接兼容性问题,避免名称修饰带来的链接错误。文章还探讨了extern在修饰const变量时的注意事项,以及extern "C"影响本文件符号导出的细节。此外,还讨论了extern "C"对普通类型和C++类型符号导出的影响,以及extern "C"的正确使用方式。
2024-03-17 15:31:04
1396
原创 【Linux】分析缓冲区,刷新机制,FILE
本文系统区分了用户层和内核层缓冲区,指出两者不同之处和特点;归纳了用户层缓冲区的三种刷新策略/文件缓冲的模式;分析了用户层缓冲区引起的常见问题;在源码层面分析了FILE结构体,尤其是关于缓冲区和_flags位图,总结了刷新策略在_flags位图上的体现。
2022-10-26 20:05:54
4696
21
原创 【Linux】硬盘中文件的管理
一、关于inode编号在Linux中输入 ls -i 命令可查看inode编号(加-l选项可以看详细信息)
2022-01-10 22:23:52
1221
23
原创 【Linux】深入理解文件IO操作
一、如何用C接口进行文件操作i. 基础函数FILE *fopen(const char *path, const char *mode);//打开函数int fclose(FILE *fp);//关闭函数size_t fread ( void *buffer, size_t size, size_t count, FILE *stream);//读取函数size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream
2021-11-29 15:55:08
2488
12
原创 【Linux】进程的创建,中止,等待和替换
一、进程的创建1.1认识fork函数为何给子进程返回0,给父进程返回子进程的pid()?父进程是唯一的无需标识,而子进程多个需标识(pid来标识)子进程是要执行任务的,所以需要标识来区分为何frok()会有两个返回值...
2021-10-13 08:55:46
327
11
原创 【Linux】一文讲清进程地址空间
一、何为进程地址空间 在我们学习C语言C++的时候,我们知道内存被划分为堆区,栈区,常量区等等,事实上这里的内存并不是物理内存,而是一个虚拟的内存空间,我们写代码时能访问得到的只有虚拟内存,系统再通过一种映射关系在物理内存上执行对应的操作,通过禁止用户直接访问物理内存从而避免因操作不当而引发事故。在Linux中,当你的程序跑起来就变成了一个进程,它的代码和数据需加载到内存,所访问到的虚拟内存就叫做进程地址空间二、为什么要有进程地址空间从此之后再也不会有系统级别(指访问物理内存)的越界问题了,因为虚
2021-10-05 07:43:45
506
9
原创 【Linux】这篇文章让你彻底搞懂什么是环境变量
一、常见的环境变量1.1 PATH作用:指定命令的搜索路径思考:1.为什么执行命名如ls不用加./,但执行mytest可执行程序要./原因是系统PATH环境变量,里面存储了很多条路径,当运行命名时会逐个在路径下找该命令通过which ls或whereis ls可查看ls命令路径通过echo $PATH可查看PATH环境变量2.如何让自己的程序执行时不用加./ 1)将程序拷贝到/user/bin目录下,不推荐 sudo cp -f myproc /user/bin
2021-10-03 08:38:35
5349
12
原创 【Linux】进程的优先级原来是这么回事
1、优先级的知识点1.1 什么是优先级 规定了占用资源的先后顺序1.2 为什么要有优先级 资源相较于申请者少,需将申请者排序分配资源1.3 Linux中如何查看进程的优先级 可通过 ps -al 指令查看进程的优先级,此处我提前运行了 myproc 可执行程序,故输入 ps -al 指令后显示有 myproc其中 PID:此进程的代号 PPID:此进程的父进程的代号 PRI与NI在下面深入剖析2、深入理解PRI值与NI在Linux中进程的优先级PRI值等于初始PRI值加上NI值,
2021-09-21 09:00:07
705
14
原创 【Linux】10min快速入门项目自动化构建工具 — make与Makefile
1、何为make和Makefile makefile:是一个集成依赖关系和依赖方法的文件 make:是一个解释makefile中指令的命令工具,从而完成项目自动化构建,生成可执行文件2、详解Makefilemakefile的书写示例:依赖关系:文件和文件之间的相关关系依赖方法:如何通过依赖关系生成文件...
2021-09-19 09:20:42
280
11
原创 【Linux】shell命令以及运行原理
1、何为shell和kernelkernelkernel即核心,也就是指操作系统,如Windows和Linux…内核是硬件与软件之间的一个中间层,作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。但应用层不能直接与kernel沟通,需通过媒介shell进行交互shellShell为命令行解释器(command Interpreter),把用户命令解释为内核可识别的机器语言,然后翻译命令结果给用户,即:将使用者的命令翻译给核心(kernel)处理将核心的处
2021-08-12 10:47:30
613
5
原创 【Linux】速刷Linux基本指令,小白快速入门
1、ls指令1.1 功能 ls可以列出目录下的子目录和文件,跟dos下的dir命令功能一样1.2 使用 ls [选项] [目录或文件]1.3 常用选项-a 列出目录下的所有文件,包括以 . 开头的隐含文件-l 列出文件的详细信息,如创建者,创建时间,文件的读写权限…-R 递归列出所有子目录下的文件-s 在每个文件的后面打印出文件的大小1.4 小技巧ls -l 等价于ll ,即列出文件下详细信息我们还可以安装tree指令,执行tree指令,它会以树状结构列出指定目录下的所有文件,
2021-08-10 22:14:11
554
原创 【Linux】如何在云服务器创建并删除用户
如何在云服务器创建并删除用户1、一些准备工作2、创建用户3、删除用户1、一些准备工作1.1 链接到云服务器1.2 用户登录,输入用户名和密码2、创建用户操作: 1.输入 adduser 用户名 指令后回车,新建用户 2.输入 passwd 用户名 指令后回车,可设置密码 3.输入密码并重新输入一遍匹配后则创建成功注: 1.此处输入密码不回显 2.密码不可过短,不可包含用户名,且设置密码有最大尝试次数完成后我们输入ls /home 指令后回车可看到当前服务器有yxy这个用户
2021-07-31 17:12:46
1240
2
原创 类和对象入门
一、类的引入在我们学习C语言的时候,我们可以使用结构体将多中不同类型的变量“糅合”成一个新的变量,如定义一个学生的结构体:struct Student{ char name[20]; int age; int ID;};学习C++后,我们可以使用类来将一个对象的属性与行为“糅合”在一起,如日期类包含日期的属性(年,月,日)和其行为(打印日期)class Date{private: int _year; int _month; int _day;public: Date(in
2021-07-25 10:49:59
237
1
原创 浅析内联函数
一,何为内联函数以inline修饰的函数叫做内联函数编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率本质是以空间换时间能不能所有函数都变成内联?不能,这样做会导致程序占用空间过大,原本函数独立出来便是方便复用,只要一份可多次使用,但若写成内联则在每个需要这函数的地方都展开,空间消耗大,虽然无需建立栈帧...
2021-07-14 21:53:48
841
原创 深入浅出函数重载原理
一,关于程序编译链接的过程预处理——头文件展开+宏替换+去掉注释+条件编译编译——检查语法,词法分析,语义分析及符号汇总,生成汇编代码汇编——把汇编代码转换成机器语言此过程会生成符号表,将函数名称处理后及其地址放到符号表中,第四阶段将要链接在一起链接——链接在一起生成可执行程序二,为什么C++支持重载,C不支持究其原因是因为在汇编期生成符号表时二者对函数名的修饰规则不同:1.分析C++windows下C++的修饰:Linux下C++的修饰:gcc++编译完成后,函
2021-07-07 20:03:24
219
原创 【C++】关于引用的奥秘
一,引用的基本知识1.直观理解:引用即对某个变量取别名,如下:int a=10;int& ra=a;//此处给a起了别名为ra2.注意点: a.引用在定义时必须初始化 b.引用只能引用一个实体,后续不能更改,而指针可随时改变指向 c.不能对临时变量引用,否则会出bug(下文详谈)二,深入挖掘引用的坑1.由const引发的问题: 不能对一个const变量进行普通引用,无法将只读的变量变为可读可写,属于权限的放大,应为const的引用 可以给一个普通变量进行const的引用,无
2021-07-07 20:01:09
190
3
原创 Visual studio实用调试技巧
如何查看调试信息 00:43min 1. 关于自动窗口,自动创建变量,动根据当前选中对象显示其调试信息,不经常用 2. 局部变量,只显示当前帧的局部变量信息3.监视(00:47min),好几个窗口是当观察变量过多,可多开几个窗口,避免翻页好几个窗口有什么不同???...
2021-03-25 12:43:24
1840
10
原创 C语言新手也能做的小游戏,满满成就感
游戏概述整体思路代码实现技术总结游戏概述利用选择,循环,少量函数的知识编写一款猜数字小游戏1.实现电脑生成一个随机数(1-100)2.每一次猜一个数并给予反馈(猜大了或者小了)直到猜对为止!!!整体思路主体部分则是先提示是否进入游戏的菜单,写成 void menu() 的函数,随后根据选择是否进入游戏或退出游戏。若进入游戏则跳转进入到void game() 的函数,进行游戏并不断给予反馈直到猜中为止。效果如图:代码实现#include<stdio.h>#include.
2021-02-23 15:28:57
4851
15
原创 我的第一篇博客
A.——Who am I ?一个就读于深圳大学的大一新生,在大一的摸滚打爬下终于算能敲上几行代码,且在期末考试中提交了属于自己的答卷,然而挑战还没结束,这只编程人生的开始,希望在前行的道路上也能找到并完成属于自己满意的答案。B.——My Ambition虽然从零基础入门C语言让我备受打击和折磨,但是我也从中收获了令我一扫疲态的欣喜和成就感,列出你编程的目标;C.——My Project尽管在学校学习了C语言的入门知识,但这距离成为大牛必定是远远不够的,所以呢,前路漫漫,需长久的努力和合适的方法,
2021-01-18 18:42:31
6105
54
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人