![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 89
凤鸣九天_
这个作者很懒,什么都没留下…
展开
-
shell基础编程
Shell变量:定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:your_name="shenlancode.com"注意:变量名和等号之间不能有空格变量名命名规则:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 有效的 S...原创 2019-05-25 12:11:17 · 155 阅读 · 0 评论 -
Shell test 命令
shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。数值测试 参数 说明 -eq 等于为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为...原创 2019-08-01 17:51:03 · 121 阅读 · 0 评论 -
Linux信号
Linux信号信号是一种软件中断,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递数据。一、信号的来源:两种方式:硬件方式和软件方式二、哪些情况会引发信号?1.键盘事件 ctrl+c ctrl+l2.非法内存 如果内存管理出错,系统就会发送一个信号...原创 2019-08-08 10:45:26 · 150 阅读 · 0 评论 -
理解文件描述符(fd)与 文件指针(FILE*),及二者的区别
所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程所打开的文件的记录表:当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,需要把文件描述符作为参数传递给相应的函数。通常,一个进程启动时,都会打开3个文件:标准输入:对应文件描述符为0(STDIN_FILENO)标准输出:对应文件描...原创 2019-08-06 10:46:53 · 1861 阅读 · 0 评论 -
使用什么命令把两个文件合并成一个文件?(A) A.cat B.grep C.awk D.cut
使用什么命令把两个文件合并成一个文件?(A)A.cat B.grep C.awk D.cutgrep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。awk:强大的文本分析工具,把文件艾尼逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行各种分析处理。cut:linux中截取字符串命令只有cat可以合并文件。如下图...原创 2019-08-08 13:58:53 · 3641 阅读 · 0 评论 -
在Linux系统上,下面那个命令不可以用来查看文件内容() Cat ls less more
在Linux系统上,下面那个命令不可以用来查看文件内容()Cat ls less more解析:linux系统可以用来查阅全部文件的三种命令:cat more lessmore命令:可以让屏幕在显示满一屏幕时,此时可按空格键继续显示下一个画面,或按Q键停止显示less命令:可以分页显示文件,和more命令的区别就在于它支持上下键卷动屏幕,当结束游览时,只要在less命令的提示符...原创 2019-08-08 15:22:29 · 12782 阅读 · 0 评论 -
以下函数中,和其他函数不属于一类的是____。 strcpy strncpy snprintf strcat strtok strncat
以下函数中,和其他函数不属于一类的是____。strcpy strncpy snprintf strcat strtok strncat解析:strcpy:拷贝字符串strncpy:复制某一长度的字符串到另一个字符串中strcat:连接两个字符串strtok:查找指定字符之前的子串strncat:连接某一长度的两个字符串snprintf:将可变参...原创 2019-08-08 15:57:28 · 950 阅读 · 0 评论 -
Linux I/O缓冲(系统调用和标准I/O)
1.两类I/O函数的缓冲机制1.1系统调用这类代表就是read/write等系统函数,它们是不带缓冲的,这里的缓冲指的是进程缓冲,在内核到磁盘之间还是有内核缓冲的。1.2标准I/O这类代表就是fread/fwrite等函数,它们带有进程缓冲,可移植性强,最后还是通过read/write函数实现的。2.两种缓冲的作用首先要了解一下写一条内容到文件中的过程,以标准...原创 2019-08-06 13:56:11 · 174 阅读 · 0 评论 -
shell特殊变量总结:$#、$0、$*、$$、$-、$?、$1、$2、$@命令
11. bash shell 中,用来获得用户传入参数的特殊变量为( C )A.$# B.$$ C.$@ D.$0shell特殊变量总结:$#:脚本的参数个数$0: 脚本名$*:以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过九个$$:脚本运行的当前进程ID号$-:记录着当前设置的shell选项$?:显示...原创 2019-08-13 14:58:09 · 543 阅读 · 0 评论 -
inode节点(详解)
首先,要明确理解inode是理解Linux/Unix文件系统和硬盘存储的基础。1.什么是inode?理解inode,要从文件存储说起。文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”。每个扇区能存储512字节(相当于0.5KB)。操作系统在读取硬盘的时候,不会一个个扇区读取,这样效率太低,而是一次性连续读取多个扇区(即一次性读取一个块),这种由多个扇区组成的“块”,是文件存取的最小单位。“...原创 2019-08-06 16:30:09 · 3315 阅读 · 0 评论 -
文件偏移lseek函数
在调用read()和write()函数时,每次操作成功后,文件当前的操作位置都会移动。其中隐含了一个概念,即文件的偏移量。文件的偏移量指的是当前文件操作位置相对于文件开始位置的偏移。头文件: #include <unistd.h> #include <sys/types.h> 函数原型: off_t lseek(int fd, off_t...原创 2019-08-06 18:14:45 · 1180 阅读 · 0 评论 -
了解进程与线程的概念及进程与线程之间的区别和联系
进程与线程:进程:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程:是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制流一个进程中可以并发多个线程,每个线程并行执行不同的任务。在Unix中,被称为轻量进程,但轻量进程更多指内核线程,而把用户线程称为线程。...原创 2019-08-13 16:41:17 · 341 阅读 · 0 评论 -
linux下的文件空洞与空洞文件
文件空洞与空洞文件lseek()系统调用可以改变文件的偏移量,但如果程序调用使得文件偏移量跨越了文件结尾,然后在执行I/O操作,将会发生什么情况?read()调用会返回0,表示文件结尾。write()调用可以在文件尾后的任意位置写入数据。在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞,这一点是允许的。从原来文件结尾到新写入数据间的这段空间被称为文件空洞。文件空洞不占用...原创 2019-08-07 16:05:17 · 3648 阅读 · 0 评论 -
dup和dup2函数
dup和dup2函数dup和dup2是两个非常有用的调用,他们的作用都是用来复制一个文件的描述符(使我们能够通过两个或者更多个不同的文件描述符来访问同一个文件),他们经常用来重定向进程的stdin、stdout和stderr。声明如下:#include<unistd.h>int dup(int fd);源描述符fd,返回值是描述符表中最小的文件描述符,返回的描述符和...原创 2019-08-07 18:08:49 · 2800 阅读 · 0 评论 -
fork()函数,fork()子进程父进程的比较总结,fork()与vfork()的比较总结
进程创建fork()fork()函数以父进程为蓝本复制一个进程,其ID号与父进程ID号不同,内存等与父进程不同,其他与父进程同享,只有在父进程或者子进程进行了修改后,才重新生成一份。成功时,fork返回是进程ID,失败返回-1;#include<sys/types.h>#include<unistd.h>pid_t fork(void)for k()...原创 2019-08-11 18:04:32 · 784 阅读 · 0 评论 -
exit()函数和_exit()函数的区别
结束进程在C语言中,我们用continue,break,return结束循环或退出函数continue:结束本次循环break:跳出整个循环,或跳出switch()语句return:结束当前函数在Linux中,我们通过exit()或_exit()来结束当前进程exit()函数所需头文件:#include<stdlib.h>void exit(int ...原创 2019-08-11 18:38:39 · 1275 阅读 · 0 评论 -
守护进程与daemon的使用
守护进程:是运行于后台常驻内存的一种特殊进程,周期性的执行或者等待trigger执行某个任务,与用户交互断开,独立于控制终端。它的父进程是init进程守护进程一般用作服务器进程守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程的名称通常以d结尾,比如sshd、xinetd、crond等守护进程的特点运行方式:后台运行 生命周期:守护进...原创 2019-08-12 17:18:42 · 458 阅读 · 0 评论 -
Shell printf 命令
printf 命令模仿 C 程序库(library)里的 printf() 程序。printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。...原创 2019-08-01 16:34:29 · 129 阅读 · 0 评论 -
linux下的正则表达式
Linux中的正则表达式:正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作,其中最为重要作用是匹配。正则表达式与通配符正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只...原创 2019-08-01 10:24:19 · 206 阅读 · 0 评论 -
对同步与异步、阻塞与非阻塞的理解
所谓同步,就是在发出一个功能调用时,在没有得到结果1,该调用就不返回(即每件事必须依次做完)所谓异步,与同步正好相反。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。所谓阻塞,阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,CPU不会给线程分配时间片,即线程暂停运行)函数只有在得到结果之...原创 2019-07-23 18:25:08 · 57 阅读 · 0 评论 -
Linux中网络通信的5种通信模型
.Linux中网络通信的5种通信模型(1)阻塞IO(2)非阻塞IO(3)I/O复用(4)信号驱动(5)异步I/O注:前四种都是同步,最后一种才是异步阻塞IO应用程序调用一个I/O函数,导致应用程序阻塞,等待数据准备好。如果数据没有准备好,一直等待,直到数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。非阻塞I/O非阻塞IO通过进程反复调用IO函数...原创 2019-07-24 08:52:03 · 463 阅读 · 0 评论 -
linux下的相对路径和绝对路径
(1)相对路径从当前位置开始描述的路径为相对路径./class1. ./class1(2)绝对路径:从/目录(根目录)开始的路径为绝对路径/home/shenlan/classs1注:位于/home/user,称之为用户工作目录或家目录,表示方式:/home/user~(3).和..每个目录都有.和...表示当前目录..表示上一级目录,即父目录根...原创 2019-07-24 09:59:08 · 211 阅读 · 0 评论 -
LT触发模式和ET触发模式
LT触发模式和ET触发模式epoll对文件描述符的操作有两种模式:LT(水平模式)和ET(边缘模式)。LT模式是默认模式,LT模式与ET模式区别如下:LT模式:当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用epoll_wait时,会再次响应应用程序并通知此事件。使用此种模式,当数据可读的时候,epoll_wait()将会一直返回...原创 2019-07-29 14:31:02 · 756 阅读 · 0 评论 -
ln命令,linux中的硬链接与软链接
软链接和硬链接软链接(符号链接),需要在ln命令后面加上-s创建名称为3.txt.slink 的软链接:ln -s 3.txt 3.txt.slink(快捷方式的名称,随便起)(其中3.txt称为被链接文件,3.txt.slink称为链接文件)(2)输入ls -l 命令查看(3)通过链接文件查看内容(4)输入vi 3.txt 修改文件内容尝试删除3...原创 2019-07-24 15:43:05 · 228 阅读 · 0 评论 -
Sockaddr结构体
Sockaddr和sockaddr_in的相互关系一般先把sockaddr_in变量赋值后,强制类型转换后传入用sockaddr做参数的函数sockaddr_in用于socket定义和赋值sockaddr用于函数参数sockaddr_in结构体:struct sockaddr_in中的in表示internet,就是网络地址,这只是我们比较常用的地址结构,属于AF_INET地址族,s...原创 2019-07-29 15:09:15 · 3406 阅读 · 0 评论 -
select、epoll、poll三种模型及三种的区别及比较
POLL模型Poll功能:监测文件描述符上,是否有某些事件发生1.函数:#include<poll.h>int poll(struct pollfd *fds,unsigned int nfds,int timeout);参数:(1)fds:是一个poll函数监听的struct pollfd结构类型的数组,每一个元素中,包含了三部分内容:文件描述符,监听的事件集合,返回...原创 2019-07-29 16:02:58 · 1046 阅读 · 0 评论 -
linux中关于文件权限的练习
文件exer1 的访问权限为rw-r--r-- ,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是chmod a+x,g+w exer1 chmod 775 exer1 chmodo+x exer1 chmodg+w exer1解析:u(user/使用者):用户g(group/所属组):用户组o (others/其他):其他用户a:所有用户x=1:执行w=2:...原创 2019-07-25 13:13:31 · 969 阅读 · 0 评论 -
Linux文件系统的目录结构是一棵倒挂的树,文件都按其作用分门别类地放在相关的目录中。现有一个外部设备文件,我们应该将其放在?(Linux文件系统的目录各存放什么类型的文件)
Linux文件系统的目录结构是一棵倒挂的树,文件都按其作用分门别类地放在相关的目录中。现有一个外部设备文件,我们应该将其放在?(c)A./binB./etcC./devD./lib笔记:/bin:存储系统可执行文件(二进制文件)/etc:存储密码文件/dev:存储外部设备文件/lib:存储系统的库目录...原创 2019-07-25 14:25:01 · 6799 阅读 · 0 评论 -
如何获取上一条命令执行的返回码
如何获取上一条命令执行的返回码(C)A.$!B.$0C.$?D.$#汇总:$0 # 脚本启动名(包括路径) $n # 第n个参数,n=1,2,…9 $* # 所有参数列表(不包括脚本本身) $@ # 所有参数列表(独立字符串) $# #...原创 2019-07-25 14:26:52 · 4542 阅读 · 0 评论 -
在CPU和物理内存之间进行地址转换时,( )将地址从虚拟(逻辑)地址空间映射到物理地址空间
在CPU和物理内存之间进行地址转换时,( )将地址从虚拟(逻辑)地址空间映射到物理地址空间TCB MMU CACHE DMA解析:MMU是Memory Manage Unit的缩写,即存储管理单元,是中央处理器用来管理虚拟内存和物理内存寄存器的控制线路,也负责虚拟内存映射为物理内存。其功能是和物理内存之间进行地址转换在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理地址空间...原创 2019-07-25 14:27:47 · 4521 阅读 · 1 评论 -
linux,shell脚本语言,if else语句,for语句,while语句以及无限循环
if elseifif语句语法格式:if conditionthen command1 command2 ... commandN fi写成一行(适用于终端命令提示符):if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi末尾的fi就是if倒...原创 2019-08-03 16:06:56 · 856 阅读 · 0 评论 -
shell脚本语言,linux中的until循环,case、esac、break、continue语句的应用
until 循环until循环执行一系列命令直至条件为true时停止until循环与while循环在处理方式上刚好相反一般while循环优于until循环,但在某些时候-也只是极少数情况下,until循环更加有用。until语法格式until conditiondo commanddonecondition一般为条件表达式,如果返回值为false,则...原创 2019-08-03 16:10:49 · 480 阅读 · 0 评论 -
Shell 函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用shell中函数的定义格式如下:[ function ] funname[()]{action;[return int;]}说明:可以带function fun()定义,也可以直接fun()定义,不带任何参数。 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,...原创 2019-08-03 17:33:31 · 85 阅读 · 0 评论 -
下面哪些函数调用必须进入内核才能完成?A.fopen B.exit C.memcpy D.strlen
下面哪些函数调用必须进入内核才能完成?A.fopenB.exitC.memcpyD.strlen解析:fopen是打开文件的函数,文件也可以看成是一个设备,打开一个设备将导致给设备所属的驱动程序发送一个IRP(输入输出请求包),而真实硬件相关的驱动程序都运行于内核。exit函数是结束进程的函数,结束进程需要访问TCB和PCB等等这些数据结构,而这些数据结构都存在于内核中。me...原创 2019-07-26 09:02:23 · 1550 阅读 · 0 评论 -
Shell 输入/输出重定向(深刻理解)
Shell 输入/输出重定向大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。重定向命令列表如下: 命令 说明 command >file 将输...原创 2019-08-03 17:37:05 · 527 阅读 · 1 评论 -
共享内存的简单了解
共享内存共享内存就是不同进程之间共享的内存区域简单地说共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,它是在多个进程之间对内存段进行映射的方式实现内存共享的。这是IPC最快的方式。工作机制共享内存的效率采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,采用共享内存的通信方式效率是非常高的。共享内存的特点...原创 2019-08-17 11:55:16 · 1536 阅读 · 0 评论