
Linux
文章平均质量分 86
ArchyLi
一个学习路上人。当然还差很多。
展开
-
Linux系统中文件下的Access/Modify/Change
首先我们创建一个file文件mkdir file接着我们输入以下语句 stat file 回车之后发现以下内容我们看最后三行其中Access/Modify/Change是三个时间Access是“访问时间”对于文件来说,当我们使用cat、more、less等命令读取文件内容,或者使用file cp命令操作文件,或执行可执行文件时,Access时间会被更原创 2017-03-19 23:24:15 · 1559 阅读 · 0 评论 -
进程等待与wait&waitpid
一、进程等待的简介(1)进程等待用来干什么的我们通过之前学习过的知识知道了,如果一个进程如果在终止的时候会关闭它所有的文件描述符,同时释放在用户空间分配的内存,但是还保存着PCB等相关信息,与此同时还保存了一些其他的的相关信息。如果此时进程正常终止,则其中保存着它的退出状态;如果是异常退出,则这些其他的相关信息会保存着该进程的终止信号是哪个。这个时候我们的子进程的父进程可以调用wait和waitpi原创 2017-12-06 20:37:53 · 1247 阅读 · 0 评论 -
【Linux】dup和dup2函数解析与文件描述符
一、文件描述符1.1 文件描述符概念我们知道在Linux下一切皆文件,因此我们需要一个东西对这些文件进行管理,此时就需要文件描述符来管理了。 文件描述符简称fd,对于内核而言,所有打开的文件都要通过文件描述符来引用。文件描述符是一个递增的非负整数,一旦当我们打开或者创建一个新的文件的时候,内核向进程返回一个文件描述符。文件描述符一般有以下三个性质:每个进程都具有自己的一个递增的文件描述符,如果我原创 2017-12-31 00:30:46 · 1089 阅读 · 0 评论 -
【Linux】open函数的参数和作用
一、open函数用来干什么open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。二、open函数的定义和参数我们首先来看下open函数在Linux下的定义#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathnam原创 2017-12-30 16:09:47 · 43780 阅读 · 7 评论 -
【LInux】进程间通信--管道
一、什么是管道管道是Unix中一种进程间通信的方法,我们把从一个进程链接到另外一个进程的数据流称为“管道”。管道是最像队列的一种进程间通信模型,生产者的进程在管道的写端写入数据,消费者的进程在管道的读端进行读取数据,这个过程类似于队列,区别就是我们并不需要关心使用的管道的线程安全和内存分配等琐碎的事情,这些事情都是由操作系统为你完成。二、管道的分类管道分为命名管道和匿名管道。原创 2018-01-08 20:53:35 · 1131 阅读 · 0 评论 -
【Linux】进程间通信--信号量
一、信号量简介信号量和之间的进程间的通信(命名管道,匿名管道、消息队列)不同,它不是用来传递数据的,它是一个计数器,用在多个进程提供对共享数据对象的访问,使得资源在一个时刻只有一个进程或者线程所拥有。那么共享内存的访问就存在了两种问题,一种是互斥的访问,一种是同步的访问。在介绍同步和互斥的操作的之前,我们来介绍一下临界区和临界资源的概念。临界资源:同一时刻只能被一个进程同时使用,也就原创 2018-01-25 17:01:33 · 964 阅读 · 0 评论 -
【Linux】进程间通信--消息队列
一、消息队列是什么消息队列提供了从一个进程向另外一个进程发送一块数据的方法,每个数据块都有相应的类型,接收者进程接收的数据块可以由不同的类型值。消息队列和管道的不同之处,是消息队列是基于消息的,而管道是基于字节流的。消息队列和命名管道一样有缺陷:每个消息的最大长度是由上线的。每个消息队列的总字节数是有上限的。系统上消息队列的总数也是有上限的。这个上限值我们可以分别在proc/sys/kcrn原创 2018-01-09 16:25:55 · 529 阅读 · 0 评论 -
【Linux】进程间通信--共享内存
一、共享内存是什么共享内存是两个进程之间最快的也是最有用的通信方式。由于之前我们所介绍的通讯方式都要进过内核和自己的用户空间之间进行传递,而共享内存则是进程直接把内存映射到自己进程的地址空间内,所以A进程和B进程可直接看到对方对这块区域所进行的操作。由于进程可以直接读写内存,并不需要任何的数据的拷贝,这一点和前面所介绍的进程间的通信就不一样,所以它的效率很高,换句话说,进程不再通过执行进入内核的系统原创 2018-01-09 23:49:27 · 516 阅读 · 0 评论 -
【Linux】进程组、作业、会话以及终端的理解
一、进程组(1)概念我们知道每一个进程除了自己的进程 ID外,还拥有一个进程组ID。多个进程组成的集合叫做进程组。他们彼此之间不是孤立的,存在父子、兄弟等关系,每个进程都有父进程(除了0号进程),而所有的进程的父进程都是以init进程为根,形成一个树状结构。如果我们需要发送一个任务到10个进程,让这10个进程去执行,但是如果我们因为某种原因需要终止这项进程,则需要一个一的把这些原创 2018-01-29 16:16:17 · 1087 阅读 · 0 评论 -
守护进程
一、简介守护进程也叫做精灵进程,是一种特殊的进程。它的生命周期很长,常常在系统引导装入时启动,在系统关闭的时候才结束。由于他们没有控制终端,所以他们是在后台运行的。在Linux系统上存在很多守护进程,这些守护进程执行了日常事务活动。同时大多数服务器也是用守护进程实现的。我们可以用命令ps axj 查看系统中的进程。其中a表示不但列出当前用户进程,还列出所有其他用户进程,x表示列出所有有原创 2018-01-29 18:16:27 · 411 阅读 · 0 评论 -
Linux下软件安装的几种方式
一、简介Linux下软件安装的方式主要有源码安装、rpm安装、yum安装,而常用的安装包主要有以下三种:tar包:例如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。 (现在用的全称叫RPM Package Manager,以前叫Redh原创 2017-11-25 10:48:42 · 10243 阅读 · 0 评论 -
进程退出方法总结与exit函数&_exit函数
一、简介一般情况下进程正常退出返回0,异常退出则返回相应的退出码。而一个程序一般的退出场景有以下三个:代码运行结束,结果正确代码运行结束,结果不正确代码异常终止常见的进程退出方式有正常结束和异常退出正常结束:1、main函数中执行return退出2、exit3、_exit异常结束:1、ctrl + c,信号终止2、kill信号终止——3、abort()不管进程是上述什么方法退原创 2017-12-03 21:20:38 · 5291 阅读 · 0 评论 -
解析fork函数与vfork函数
一、fork函数与vfork函数的简介(1)fork函数在Linux下fork函数很重要,它的作用是创建子进程,即在当前进程中创建一个新的进程,新进程为子进程,原来的进程为父进程。我们来看一下这个函数的返回值和类型#include <unistd.h>pid_t fork(void);我们可以看到这个函数的返回值是一个pid_t的类型,它的返回类型分别为:子进程返回0父进程返回子进程的ID出原创 2017-12-03 20:01:18 · 908 阅读 · 0 评论 -
Linux进程描述符:task_struct结构体
浅析tast_struct结构体 1、简介1.1进程1.1.1进程的概念我们知道操作系统最核心的概念就是进程。 其实进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。 进程是一个动态的实体,它是程序的一次执行过程。 进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。 在Linux下面,可以通过命令ps或pstre原创 2017-04-15 01:15:30 · 2610 阅读 · 1 评论 -
软链接与硬链接
一、Linux下的文件与目录我们知道Linux下一切皆文件,所以我们为了方便于对这些文件的管理,便引入了目录的概念。目录可以使文件被分类的管理,从而使Linux的系统文件形成一个层状的目录树。在Linux下根目录的介绍一文中也展示了根目录的文件的作用。 但是在Linux下并不区分目录和文件,目录只是记录了其他文件名的文件,所以创建相同目录的时候会创建失败。二、什么是链接链接实际上是一种文件共享的方原创 2017-11-07 22:51:59 · 426 阅读 · 0 评论 -
【Linux】各个目录下的作用和内容
一、概述在早期阶段,各个厂家定义了自己的Linux的系统文件目录,非常混乱,但是在后期,FHS标准规定了Linux下根目录各文件夹的名称以及作用,统一了Linux下文件命名混乱的局面。FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还原创 2017-11-03 21:59:26 · 2324 阅读 · 0 评论 -
【Linux】文件类型
我们知道在Linux下一切皆文件,那么Linux下是如何区分这些文件的呢?我们知道在windows下是查看文件的后缀名来区分各种各样的文件,但是在Linux下却没有后缀名那么我们如何区分呢?一、inode文件数据都存储在“块”中,那么我们必须要用一个地方去存储文件的各种信息,包含了文件的创建者,文件的创建实现,文件的大小,文件的权限等信息,存储这些信息的区域就叫做inode,中文名称“索引结点”。i原创 2017-11-03 22:45:44 · 451 阅读 · 0 评论 -
【Linux】常见命令总结
Linux下的命令繁多复杂,作为一个初学者我们应该具备认识和运用其中常见的命令,现在来汇总下:(1)su切换用户su是切换用户权限的命名,当我们从普通用户切换至超级用户时使用该命令,效果如图: 如上图,我们发现当输入su时,会出现”Password:“ 这时表示需要我们输入密码,密码是不显示出来的,所以当我们输入回车按键,就可看到用户由admin切换至root用户。 当我们需要退出超级用户原创 2017-11-04 01:28:01 · 499 阅读 · 0 评论 -
【Linux】重要命令总结
下文我们主要要介绍如下命令: du、df、top、free、pstack、su、sudo(sudo -, sudo -s)、useradd、password 。(1)du在Linux下du命令是查看使用空间的命令,和df功能类似,但是不同的是du命令是对文件和目录磁盘使用的空间进行查看。格式du [选项] [文件]功能查看每个文件和目录的磁盘使用空间。选项 选项 含义 zebra原创 2017-11-04 15:03:48 · 628 阅读 · 0 评论 -
【Linux】权限总结
我们知道在Linux下一切皆文件,那么所对应的文件应该有它自己的权限,不然如果任何用户都能修改某个文件,那么可能会导致许多未知的后果。一、用户和用户组用户:用户是计算机的使用者,用计算机可识别的用户ID标识。用户组:用户容器,用来将多个用户合并为一个单一的逻辑组件,用计算机可识别的用户组ID标识。用户类别:管理员用户:也成为root用户,UID为0。系统用户:为系统运行提供服务的非登陆式用原创 2017-11-04 16:17:53 · 569 阅读 · 0 评论 -
poll()的实现与详解
poll不同于select使用三个位图表示fdset的方式,poll使用一个pollfd的指针来实现。因为select的实现和poll的实现非常类似,知识描述fd集合的方式有所不同,poll使用的是pollfd而不是select中的fd_set结构,其他类似,所以poll的实现相比于select实现简单。首先我们看下Linux下的poll()是如何描述的一、poll()函数原创 2017-07-31 23:19:11 · 4278 阅读 · 4 评论 -
gcc/g++使用大全
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 预处理,生成.i的文件[预处理器cpp] 将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 连接目标代码,生成可执行程序[链接器ld] [参数详解]-x language filename 设定文件所使转载 2017-11-04 23:02:02 · 456 阅读 · 0 评论 -
解析僵尸进程与孤儿进程
一、僵尸进程与孤儿进程的定义我们知道一个子进程如果要结束,其内核释放进程的所有资源,但是还保存了一部分资源供父进程使用(是一个被称之为僵尸进程的数据结构,包含有进程号、运行时间、退出状态等,它需要父进程去处理),所以其父进程要调用wait或者waitpid获取子进程的状态信息,然而如果父进程没有调用这个信息会发生什么情况呢?如果父进程没有调用这个信息,那么这段信息将会被一直占用,但是系统中的资源是原创 2017-11-29 21:07:14 · 1212 阅读 · 0 评论 -
常见进程调度算法总结
一、定义进程调度也称为低级调度,它所调度的对象为进程(或者内核级线程),而进程调度算法主要有以下几种:先来先服务调度算法 短作业优先调度算法 高优先权优先调度算法 基于时间片的轮转调度算法 多级反馈队列调度算法 二、调度算法介绍(1)先来先服务调度算法(FCFS)简介:先来先服务调度算法是一种最简单的调度算法,可用于作业调度,也可用于进程调度。 原理:在进程调度中采用先来原创 2017-11-30 18:20:01 · 3548 阅读 · 0 评论 -
Linux下彩色进度条的实现
一、简介我们在Linux下安装文件都会有一个进度条来提示我们安装的进度,它里面会动态增长的一个图像表示进度,同时还有百分数表示安装百分比等等信息。 我们首先来看一下实现效果:实现一个进度条我们首先需要知道如下的知识我们才能完全的写出这个小程序。二、缓冲区一般C库函数写入文件是全缓冲方式,而写入显示器是行缓冲方式,printf、fwrite库函数会自带缓冲区,而我们只要达到了一种缓冲方式我们就可以刷原创 2017-11-30 20:01:27 · 1153 阅读 · 0 评论 -
make与makefile的编写
一、简介大家都说makefile是用来检验一个人有没有具有完备的大型工程的能力,因为它关系到了整个工程的编译规则。 它像一个shell一样在文件的内部也可以使用操作系统命令,一般我们在这个文件里面按照文件的类型功能和模块分为若干个目录,它指定了什么文件先编译什么文件后编译,它还有一个好处就是自动化编译,一旦我们写好了makefile文件,我们只需要一个make命令便可以让整个工程完成编译。如果我们原创 2017-12-03 01:18:23 · 528 阅读 · 0 评论 -
系统调用和库函数
一、系统调用下图我们可以看到用户和操作系统的关系: (1)什么是系统调用系统调用就是内核的一种出口,它是操作系统提供给用户程序调用的一组”特殊“的接口。逻辑上系统调用可以被看作一个内核与用户空间程序的接口。它的执行流程就是,把用户进程的请求传递给内核,待内核处理完毕后将处理结果返回给用户空间。(陷入进内核态0x80) (2)系统调用和API系统调用和API很多人会理...原创 2018-04-20 22:50:13 · 939 阅读 · 0 评论