linux
文章平均质量分 84
linux学习记录
孤サ月
虚心接受任何指正、教导和批评(包括但不限于知识内容,覆盖范围等)
展开
-
进程动静态库
动态库再进程运行的时候,是要被加载的(静态库没有)。常见的动态库被所有的可执行程序(动态链接的)都要使用,动态库 ——— 共享库。将自己库所在的路径,添加到系统的环境变量LD_LIBRARY_PATH中(默认是没有的,如果有可能是因为其他原因系统默认添加了)如果添加了配置文件,将不会随着关机重启而还原,配置文件一旦添加将永久拥有,除非自己删除!实际情况,我们用的库都是别人的成熟的库,都采用直接安装到系统的方式!我这里是因为配置过vim自动添加的,默认是没有的! 以so为后缀的文件就是生成的动态库了!原创 2024-04-25 03:00:00 · 1048 阅读 · 0 评论 -
文件描述符
先来段代码回顾C文件接口其中strlen不需要加 1, \0 结尾是c语言的规定,文件要保存的是有效数据, \0 只是结束标识符。当以w模式打开文件时,第一件事是先清空文件然后再打开!若以a模式打开文件,实则是在结尾追加内容!输出信息到显示器,你有哪些方法显示结果:什么叫做当前路径?当一个进程运行起来时,这个进程都会记录自己当前所处的工作路径!ps axj查看进程再 ls /proc/ 进程 查看cwd就是当前路径的变化将查看到的cwd路径与当前pwd路径先对比,是完全一样的!!C默认会打开三个原创 2024-04-24 09:34:26 · 890 阅读 · 0 评论 -
进程控制(二)
首先,这里我们先写一个简单的指令代码:if(argc!= 2)\n");\n");\n");else\n");return 0;如果只是按照正常的方式将mycmd文件也加入到makefile文件中,也是默认执行第一个exec文件,.PHONY:all那么,我们如何用exec执行mycmd文件指令呢?16//这里输入pwd查到的路径,最后面再加上想要调用的文件指令名称int main()printf("子进程开始运行,pid:%d\n", getpid());原创 2024-04-16 04:00:00 · 295 阅读 · 1 评论 -
进程控制(一)
完成了进程的独立性的技术保证!执行return n等同于执行exit(n),因为调用main的运行时函数会将main的返回值当做 exit的参数。通常,父子代码共享,父子在不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。,其中内核数据结构通常由操作系统维护,而进程代码和数据一般从磁盘中来,也就是c/c++程序加载之后的结果!main函数的返回值也叫进程退出码,其返回给上一级进程,用来评判进程执行结用的,可以忽略。对代码而言:都是不可被写的,只能读取,所以父子共享,没有问题!原创 2024-04-11 04:00:00 · 898 阅读 · 0 评论 -
linux地址空间
我们发现,输出出来的变量值和地址是一模一样的,很好理解呀,因为子进程按照父进程为模版,父子并没有对变量进行进行任何修改。可是将代码稍加改动。在堆和栈的地址空间有着很大的差距,再根据地址图标不难发现,中间的差距就是空出的偌大的共享区空间!我们发现,父子进程,输出地址是一致的,但是变量内容不一样!从输出结果可以看出程序的地址空间大小是逐渐递增的!前面所说‘程序的地址空间’是不准确的,准确的应该说成。可是我们对他并不理解!原创 2024-04-10 04:00:00 · 688 阅读 · 0 评论 -
linux环境变量
上面获取环境变量的方式都太复杂,此时使用系统自带的获取环境变量的函数 **getenv() ** 在获取更为简单。每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。虽然暂时不知道这些环境变量有什么用,但是我们知道可以通过main函数来输出环境变量的值了。,当然如果就是想使用make指令编译代码,也可以在make指令后面加。如果想查看自己linux的环境变量,输入。很容易就获取了PATH的环境变量参数!这就是系统给进程传入的环境变量!原创 2024-04-08 04:00:00 · 640 阅读 · 0 评论 -
vim美化配置(懒人版)
为了使用编写程序的格式更加舒适,我们还有再来重新设置一下vim的缩进大小vim .vimrc使用vim指令修改第50行开始的这三个数据:将这三个其中的2全部改为4,并保存退出!!!如图:这时vim配置便大功告成了!!!!原创 2024-04-07 05:00:00 · 685 阅读 · 0 评论 -
状态优先级
的进程状态为S+状态,也即睡眠状态。看看Linux内核源代码怎么说。此时发现进程便为了R状态!Z(zombie)-僵尸进程。原创 2024-04-06 05:00:00 · 2247 阅读 · 0 评论 -
Linux调试器-gdb使用
文章目录Linux调试器-gdb使用1.背景2.开始使用3.理解Linux调试器-gdb使用1.背景程序的发布方式有两种,debug模式和release模式Linux gcc/g++出来的二进制程序,默认是release模式要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项2.开始使用gdb binFile 退出: ctrl + d 或 quit 调试命令:list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。list/l 函数名:列出原创 2024-04-03 07:00:00 · 432 阅读 · 0 评论 -
Linux项目自动化构建工具 --- make/Makefile
如果func文件不存在,或是func所依赖的后面的hello.o文件的文件修改时间要比func这个文件新(可以用 touch 测试),那么,他就会执行后面所定义的命令来生成hello这个文件。当然,你的C文件和H文件是存在的啦,于是make会生成 func.o 文件,然后再用 func.o 文件声明make的终极任务,也就是执行文件func了。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。原创 2024-04-04 05:00:00 · 1097 阅读 · 0 评论 -
Linux编译器 --- gcc/g++使用
我们编译c文件时,通常使用-o选项。原创 2024-04-03 05:30:00 · 947 阅读 · 0 评论 -
linux编辑器——vim使用方法
三种模式正常模式插入模式底行模式vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。原创 2024-04-02 05:00:00 · 1753 阅读 · 0 评论 -
Linux软件包管理器yum
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.原创 2024-04-01 05:00:00 · 719 阅读 · 0 评论 -
shell命令运行原理
你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)”,但我们一般用户,不能直接使用kernel。原创 2024-03-30 05:00:00 · 528 阅读 · 0 评论 -
linux基础指令(二)
总之,man就相当于一个在线使用手册,可以随时查阅不懂的指令,当然界面默认全是英文,如果看的头大,可以汉化一下,就几行命令即可,这里就补过多赘述了。mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录,可以当作为windows中的剪切功能。该命令可以发现将要打印的内容输出到了a.txt文件中,由于原目录中没有该文件,所以顺带创建了该文件并将内容打印到该文件中。访问Linux手册页的命令是man。原创 2024-02-22 17:43:21 · 886 阅读 · 1 评论 -
linux基础指令(一)
linux基础常用指令原创 2024-02-22 15:01:06 · 2015 阅读 · 1 评论 -
Xshell连接linux
Xshell7连接Linux原创 2024-02-22 11:13:23 · 379 阅读 · 1 评论