Linux学习笔记
文章平均质量分 89
主要介绍Linux系统的相关指令及指令的用法,以及Linux的文件,目录,磁盘,shell等内容。
_stark
这个作者很懒,什么都没留下…
展开
-
Linux信号处理
大家应该都了解当我们在Linux下面运行程序时,如果程序跑飞了,那我们可以通过Ctrl-C来终止掉跑飞的程序,其实,当我们按下Ctrl-C时,涉及到了信号的相关处理工作,所以,今天我们就来谈一谈Ctrl-C被后的信号处理吧。什么是信号信号其实是一种软件中断,它为程序提供了一种处理异步事件的方法,所谓的异步事件就是事件的发生在任何事件都有可能,很多重要的程序都需要对信号进行处理。在Linux中一共有多原创 2017-02-24 14:01:48 · 2051 阅读 · 0 评论 -
Linux作业控制
前面我们学习了进程,线程,信号等相关内容,今天我们要引入一个新的概念——作业,那么什么是作业呢?当我们在Linux的shell中运行程序时,这个程序就可以看成是一个作业了,可以这么说shell控制的是作业,而不是进程,而且shell还可以分前后台对作业进行控制,所以,今天我们就来谈一谈Linux下面的作业控制。什么是进程组要弄明白作业这个概念,首先我们必须要了解进程组,那么什么是进程组呢? 熟原创 2017-02-25 20:24:03 · 2290 阅读 · 0 评论 -
Linux守护进程
首先,我们在Linux的shell下面运行一条指令ps -ajx,其中 ps是查看当前系统进程状态的指令,-a显示由其它用户所拥有的进程的状态,-x显示没有控制终端的进程的状态,-j显示与作业相关的信息。我们在图中看到,图中所列举的这些都是与控制终端无关的进程,在Linux中我们称这些进程为守护进程,也叫做精灵进程,今天我们就来谈一谈Linux下面的守护进程把。什么是守护进程?守护进程也被称为精灵进原创 2017-02-26 17:00:16 · 867 阅读 · 0 评论 -
例说生产者和消费者模型
什么是生产者和消费者模型什么是生产者消费者模型?生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制,如下图。 生产者和消费者模型必须具有的条件用一句话概括,生产者消费者模型必须具有的条件是三种关系,两类角色,一类交易场所。 一类交易场所:交易场所指的是生产者和消费者之间进行数据交换的仓库,这块仓库相当于一个缓冲区,生产者负责把数据放入到缓冲区中,消费者负责把缓冲区中的数据原创 2017-02-19 17:14:29 · 6712 阅读 · 3 评论 -
例说读者写者模型
前面我们学习了生产者和消费者模型,想了解一下的可以去看看这篇客: http://blog.csdn.net/bit_clearoff/article/details/55805884什么是读者写者模型读者和写者模型是操作系统中的一种同步与互斥机制,它与消费者和生产者模型类似,但也有不同的地方,最明显的一个特点是在读者写者模型中,多个多者之间可以共享“仓库”,读者与读者之间采用了并行机制;而在消费者原创 2017-02-20 16:22:08 · 2887 阅读 · 0 评论 -
动态链接和静态链接
什么是库库从本质上来说是一种可执行的二进制文件,可以被加载到内存中运行,而根据链接时期的不同,库又可以分为静态库和动态库。链接链接就是将不同部分的代码和数据收集和组合成一个单一文件的过程,也就是把不同目标文件合并成最终可执行文件的过程,注意:这个过程不涉及内存,链接按时期的不同可以分为三种形式,分别是: 1. 编译时链接:这个其实就是我们常说的静态链接过程; 2. 装载时链接; 3. 运原创 2017-02-18 15:05:16 · 1301 阅读 · 0 评论 -
Linux下的线程控制
首先大家可以看看这篇文章,这篇文章对进程和线程的关系做了生动的讲解: http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html什么是进程前面我们学习了进程的相关知识,现在我们先来做以下回顾。 进程:进程是指在系统中能够独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成,并且每一个进程都有一个进程控制原创 2017-02-18 17:55:56 · 1417 阅读 · 0 评论 -
浅析shell的工作原理
本章我们的内容将会介绍Linux中的命令解释器shell的工作原理我们还会编写一个简单的shell什么是shell?Linux系统的shell相当于操作系统的“一层外壳”,它是命令语言解释器,它为用户提供了使用操作系统的接口,它不属于内核,而是在内核之外以用户态方式运行。它的基本功能是解释并执行用户打入的各种命令,实现用户与Linux内核的接口。 在启动Linux系统后,内核会为每个终端用原创 2017-02-13 22:33:51 · 6723 阅读 · 0 评论 -
Linux进程通信(一)——pipe管道
本章内容采用pipe管道如何进行进程之间的通信pipe管道进程通信的规则和限制Linux中pipe管道的实现机制和管理pipe管道的结构体什么是进程通信进程通信就是两个进程之间进行数据交换,在Linux中有好几种可以进行进程通信的方式,在这篇文章中我们主要介绍最基本的进程通信方式——pipe管道。进程通信的途径进程之间交换信息的唯一途径就是传送打开的文件。管道(pipe)管道是一种最古老也是原创 2017-02-14 20:30:29 · 12767 阅读 · 2 评论 -
Linux 进程通信IPC对象之信号量
什么是信号量信号量与其他IPC对象不同,它是一个计数器,用于多个进程对共享数据对象的访问,它的本质是一种数据操作锁,它不像消息队列和管道那样具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信。如何通过信号量来控制进程间通信为了获得共享资源,进程需要执行下列操作: (1)、测试控制该资源的信号量; (2)、若此信号量为正,则进程可以使用该资源,在这种情况下进程会将信号原创 2017-02-16 16:59:28 · 1268 阅读 · 0 评论 -
进程管理之程序替换
exec函数族在Linux中,exec是一个函数族,它一共有6个函数,如下: #include <unistd.h> int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const ch原创 2017-02-13 18:43:47 · 1192 阅读 · 0 评论 -
关于文件描述符(file_struct)
什么是文件描述符 文件描述符(file_struct)是一个非负整数,对于Linux内核而言,为了高效管理已经被打开的文件所创建的索引,操作系统在每个进程描述符中都提供了文件描述符表,文件描述符表中每个表项都有一个指向已经打开文件的指针;而已经打开的文件在内核中用file结构体表示,文件描述符中的指针指向file结构体;下面,我们首先来介绍一下file结构体:什么是file结构体file结构体原创 2017-01-15 23:12:18 · 6716 阅读 · 1 评论 -
进程控制(上):进程创建,进程等待,进程终止
进程创建进程创建被定义为通过父进程创建子进程的过程。fork函数函数原型:pid_t fork(void);特点: 1.fork函数调用一次,返回两次两次返回值得区别分别是子进程当中的返回值为0,父进程当中的返回值为新建子进程的ID(将ID返回给父进程的原因是没有函数可以使父进程得到子进程的ID,这样会便于管理); 2.子进程被创建出来后,子进程是父进程的副本(子进程获得父进程数据空原创 2017-01-18 18:02:41 · 2731 阅读 · 0 评论 -
在Linux下实现简易进度条
本文将要概述printf的缓冲区问题;\r和\n的区别;如何实现一个简易的进度条;奇怪的现象进度条是安装和下载软件中常见的部分,它可以表示软件安装或下载了多大,能给客户一种直观的感受,今天我们就来实现一个简易的进度条,基本构思是这样的,我们定义一个大小为102的字符数组,其中100个用来存储‘#’,每跑了进度条的1%它就会在字符数组中增长一个该符号。还有两块空间用于存放’\0’,和防止死循环原创 2017-01-03 21:57:15 · 1470 阅读 · 1 评论 -
exit函数和_exit函数的区别
高级I/O函数在Linux标准库中,有一套称为高级I/O函数,例如我们所熟知的printf,fopen,fread,fwrite都在此列,他们也被称为缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区,在每次读文件时会多读若干条记录,这样下次读文件时就可以直接从内存的缓冲区去读。在每次写文件时也会先写入缓冲区,当缓冲区写满,或者我们手动的刷新缓冲区,或者遇到\n,EOF这样的结束符,才会把对原创 2017-01-14 10:51:45 · 8419 阅读 · 0 评论 -
内存描述符mm_struct浅析
什么是内存描述符什么是进程?进程是正在执行的程序,是可执行程序的动态实例,它是一个承担分配系统资源的实体,但操作系统创建进程时,会为进程创建相应的内存空间,这个内存空间称为进程的地址空间,每一个进程的地址空间都是独立的! 当一个进程有了进程的地址空间,那么进程的地址空间就必须被相应的工具所管理这个工具被称为内存描述符mm_struct,它被定义在、/usr/src/kernels/include/原创 2017-01-12 12:25:03 · 4311 阅读 · 0 评论 -
task_struct结构体成员详解
1:引言进程就是程序动态运行的实例,它是承担分配系统资源的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素: 标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。 状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几个状态,所以都有个标识符来记录进程的执行状态。 优先级:如原创 2017-01-09 22:18:38 · 18749 阅读 · 0 评论 -
初始操作系统中的虚拟内存(上)
本文我们将会提到物理和虚拟寻址 虚拟内存作为缓冲工具 页表 地址翻译为什么要引入虚拟内存在一个操作系统中,不同的进程之间都是共享cpu和主存资源的,但是,共享主存会发生一些意想不到的结果,例如当前进程有可能不小心写了其它进程的内存。 为了更加有效管理内存并且少出错,便引入了一种对主存抽象的概念,称为虚拟内存(VM)。它将主存看成是一个存储在磁盘上的地址空间的高速缓存;并且为原创 2017-01-11 23:09:47 · 1101 阅读 · 0 评论 -
Linux下调试器GDB、makefile的使用
前面的几篇博客中我们讲解了Linux下的编辑器vim、编译器gcc和g++,今天我们来介绍一下其他常用的三种工具,它们分别是程序调试器:GDB、代码查看器:ctags、还有一个辅助工程的工具:Makefile程序调试器:GDB在windos下我们常用vs编辑器中自带的调试工具进行程序的调试,对于程序员来说,调试自己写的程序时必须的;在Linux中,我们可以使用GDB来调试已经编译好的可执行程序;注意原创 2017-01-01 19:28:14 · 9296 阅读 · 0 评论 -
Linux的gcc和g++的区别
Windows中我们常用vs来编译编写好的C和C++代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多,但我们只介绍两款常用的工具,它们分别是gcc和g++.工具用法介绍gcc和g++的用法都是一样的,在这里我们只介绍gcc: 上图介绍了相关指令和参数以及该条指令所做的对应的事情。gcc -E原创 2017-01-01 12:21:23 · 47700 阅读 · 7 评论 -
[Linux]:环境变量
什么是环境变量环境变量一般是值在操作系统用来指定操作系统运行环境中的一些参数,如:临时文件的位置和系统文件的位置等等。在操作系统中用户可以通过修改环境变量的方式来对自己的运行环境进行配置。 如Linux系统中: 在我的/home/lzh/code/Cplusplus下有一个通过GCC编译好的a.out的文件,一般我们可以通过./a.out和a.out的绝对路劲来执行a.out文件,那如果我们原创 2016-12-22 22:36:30 · 812 阅读 · 0 评论 -
Linux文件系统的三个时间
文件的三个时间相信大家都已经很熟悉windows操作系统了,当我们在windows系统下创建一个文件时,系统同时会为这个文件建立相关的参数去描述这个文件,如图: 这些参数包括文件的大小,文件类型,位置,,以及创建、修改、访问这三个文件时间。那么我们看看再Linux系统下是否会有相似的参数呢? 在Linux下,我们可以用stat+文件名查看文件的相关参数,具体参数解释如下图: 在原创 2016-12-24 22:12:52 · 2283 阅读 · 0 评论 -
Linux下VIM编辑器的使用
为什么要使用vimLinux下有很多文本编辑器,如简单好用的nano,Emacs,pico,vi等,vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因: 1.所有的UNIX Like系统都会内置vi文本编辑器,其他的文本编辑器则不一定存在; 2.很多软件的编辑接口都会主动调用vi,例如crontab等命令; 3.vim相比其他编辑器还具有程序编辑的能力,可以原创 2016-12-26 12:03:02 · 1154 阅读 · 0 评论 -
Linux中的查找指令:find
思维导图为了使后面的讲解更加清晰,我们先附上find命令的思维导图 命令的使用下面我们对find命令的参数和选项进行测试,熟悉该指令的应用。option一.与文件时间有关的参数的指令前面我们提到了Linux文件系统的三个时间,他们分别是mtime,atime,ctime,下面我们先来进行一下简单的回顾: mtime:文件系统的修改时间,如果文件的内容被修改则会更新mtime。atime:文件原创 2016-12-31 13:42:52 · 1757 阅读 · 0 评论 -
Linux的特殊权限
Linux下的文件权限前面我们提到了关于文件的三个重要权限,那就是r、w、x这三个读、写、可执行的权限,是不是文件系统只有这三个权限呢?答案当然是否定的,首先,我们来看看下面这两个文件的权限: 我们发现这两个文件出现了s和t这两个权限,并且还分别占据了/usr/bin/passwd中所有者权限中x权限的位置以及/tmp目录中其他人的可执行权限的位置。这些权限我们称之为特殊权限,这些特殊原创 2016-12-31 20:41:38 · 935 阅读 · 0 评论