Linux基础
文章平均质量分 78
一些常见的错误和一些基础的命令,复习和避坑宝典
编程学渣ズ
学海无涯,努力不躺平
展开
-
Linux基础教程:10、进程通讯(管道通讯)
父子之间通讯是共用一个管道,管道的两端只能进行读写操作中的一种,因此父子通讯时应该关闭父子进程中的一个文件描述符,比如在父进程中写操作,在子进程中读操作时,我们就应该使用close函数关闭父进程中的读端和子进程的写端;这样就可以通过向管道中读写数据来实现进程之间的通讯;要注意几个点,管道是需要在进程创建之前在再创建的,如果在进程之后创建管道的话顺序就乱了,管道将不会生效,而且这个半双工过程,也就说我们一次只能通信一次,要么是a向b发信息,要么就是b向a,不能ab同时,所以我这里就拿父子进程来讲解;原创 2022-11-19 19:22:52 · 423 阅读 · 0 评论 -
Linux基础教程:9、linux进程管理(2)
这里我们使用了一个操作,就是在创建了子进程之后,我们让其休眠2秒,之后父进程就会退出,它退出之后子进程就成了一个孤儿进程,结果就是子进程一直在运行,没有回收,而我们可以从窗口中看到没有显示原来的那个操作界面;原本会一直执行下去的父进程随着僵尸进程的产生随之就是退出了,是因为wait函数的调用,在产生了僵尸进程时候进行了处理然后打印了2099的编号,然后在没有了僵尸进程时候就执行了exit(0);原本执行的子进程到这行代码之后就跳到sy文件里面执行了,而且子进程在这个函数之后的代码都不会再执行了;原创 2022-11-19 19:15:31 · 884 阅读 · 0 评论 -
Linux基础教程:8、linux的进程管理(1)
这里的pid_t应该是头文件里面的宏定义,相当于int;当我们执行fork这个函数之后,就会创建一个和本线程一模一样的子线程,而且是直接执行的,所以我们要注意这个函数的使用,fork也是有返回值,这个反回值可以使0、1 、-1,分别表示的子线程、父线程、创建线程失败;不管加不加-,反正u配合起来的意思就是静态的打印当前运行的进程,为什么是静态有什么是静态,因为它不会动,我们也是可以用肉眼看出来的,这个就是一串不会动的数字,然而我们可以很容易的从这个数据中发现他们是一个表格,表头上是各种各样的进程的参数;原创 2022-11-11 15:38:53 · 241 阅读 · 0 评论 -
Linux基础教程:7、文件i/o操作补充
上一期我们介绍了文件的读取(read)、写入(write)和关闭(close),这一期我们在扩充几个函数:1、lseek函数这个函数跟我们的鼠标光标息息相关,他可以设置光标的起始位置,那就意味着这个函数可以决定文件复制的起始位置和写入的起始位置,同样的你可以使用man 2 lseek来查看这个函数的具体信息,这里我们就不详细说明了,我们就直接将几个重要的点提一下:这个函数的第一个参数是文件描述符,也就是前面讲到的open的返回值,代表我们要移动光标的文件,第二个参数是移动的长度,如果是负数就是往前,正原创 2022-11-03 11:36:45 · 187 阅读 · 0 评论 -
Linux基础教程: 6、 shell入门和文件io基本操作
linux也常常使用脚本语言,也就是shell,具有变量的无特定类型的特点,我们可以不写数据类型就可以进行定义和赋值,他的语句具有镜像的特点,比如if需要以fi结尾,case 要以esac结尾;那我们来走进shell的世界探索一番脚本语言的语法:shell定义变量也是和C语言一样需要遵循规则的,比如一些不可以用作变量名的字符:标点符号、纯数字、关键字;变量名 = 值$变量名C语言里面如果我们想要引用变量的时候直接写变量名叫就可以了,但是在shell中我们必须要加上$才行;原创 2022-11-01 09:42:24 · 360 阅读 · 0 评论 -
Linux基础教程:5、shell入门前的准备
同样,举一反三,我们如果是ll命令也好,其他具有输出功能的命令也好,都是将结果输出到后面的文件中;这里实现的就是将cat出来的内容作为grep的抓取对象,可以很明显的看到这里输入了一条带有init的记录,其实就是/etc/passwd中的一条记录;这个语句是有判断能力的,只有前面一条语句执行成功之后才会执行后面的,可以看到我们执行ll成功之后还会执行ls,但是执行s失败之后就不会再执行ls了;输入文件的标号是0,也就是0代表着标准输入,默认的是键盘,在命令执行的时候读取输入文件的数据;原创 2022-10-27 11:40:35 · 382 阅读 · 0 评论 -
Linux基础教程: 4、用户组和用户的创建
第一个是组名,第二个是密码位,第三个是组id;在Linux系统中有三大用户,分别是超级用户、普通用户和系统用户,他们拥有者各自的权限和各自的组,而在用户组中,有又基本组和附加组,一个用户只有一个基本组,但是可以从属于多个附加组,这一节,我们来学习如何创建一个用户和如何更改该用户的分组;他们其实是一串8进制数,也就是每三个没一组,rwx分别对应的数值是421,所以以后我们遇到对应的权限的数字需要知道这个文件拥有的是那些权限,可读对应的是4 ,可写是2,可执行为1;,也就是我们之前创建用户时自动创建的文件夹;原创 2022-10-27 11:02:04 · 18463 阅读 · 2 评论 -
Linux基础教程:3、gdb调试工具的使用
如果想要一个程序可以让我们调试,我们需要让这个程序具备调试的信息,如果让编译文件具有调试信息呢?1)、b 行号 : 在行号前面打一个断点(这个行号就是使用l 命令看到的行号);这里可以看到我们打的所有断点的信息,包括编号为2的条件断点1 == 4;条件断点也是非常常用的,我们的以设置在变量满足某种情况的时候打个断点;7、display:可以再调试的时候使用,自动打印当前位置的变量值。可以看到这个编译出来的文件还是比较大的,因为里面存在调试信息;4)、step : 往下执行,一步一步执行,会进入函数;原创 2022-10-20 11:17:32 · 303 阅读 · 0 评论 -
Linux基础教程:2、基本命令、权限和使用vi编辑器
那好,上一篇我们只讲了如何在自己的计算机上搭建好linux环境以及xshell软件的安装和使用,这一期我们就开始入门一下linux系统以及linux环境下面如何编写一个C语言程序;:显示当前操作路径;:切换到目标文件夹;:这个就表示显示当前目录下所有文件的详细信息;:这是常见的复制文件的命令,当然我们是可以将路径添加上去的,就表明需要复制文件到想要的路径下面;:当然,你们也可以不用加i,那么删除的时候就不会征求你的同意了,所以要慎用;如果是删除文件的话可以不用加选项条件,如果是文件夹的话就需要了;原创 2022-10-18 10:53:08 · 1246 阅读 · 1 评论 -
Linux系统基础教程:1、xshell进行远程操控
嗯,还有的就是我们的虚拟机vm ware,网上有很多资源,大家自行下载,他是需要激活的,大家安装之后随便搜一搜就一大堆,所以我就不详细讲解了;可以看到我这里就是192.168.175.1,别问我是怎么知道的,因为标注了是vmware network。咱先不说他的界面,就拿他的命令来说,那真是让人眼花缭乱,头皮发麻,那我们为什么还要使用他呢?输入ifconfig,可以看到你inet是192.168.175.128;那么好,恭喜你已经打开了被操控的入口,那么就可以实现了吗?原创 2022-09-10 13:00:50 · 707 阅读 · 0 评论