Linux学习笔记
文章平均质量分 85
_stark
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[Linux]:环境变量
什么是环境变量环境变量一般是值在操作系统用来指定操作系统运行环境中的一些参数,如:临时文件的位置和系统文件的位置等等。在操作系统中用户可以通过修改环境变量的方式来对自己的运行环境进行配置。 如Linux系统中: 在我的/home/lzh/code/Cplusplus下有一个通过GCC编译好的a.out的文件,一般我们可以通过./a.out和a.out的绝对路劲来执行a.out文件,那如果我们原创 2016-12-22 22:36:30 · 876 阅读 · 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 · 1268 阅读 · 0 评论 -
浅析shell的工作原理
本章我们的内容将会介绍Linux中的命令解释器shell的工作原理我们还会编写一个简单的shell什么是shell?Linux系统的shell相当于操作系统的“一层外壳”,它是命令语言解释器,它为用户提供了使用操作系统的接口,它不属于内核,而是在内核之外以用户态方式运行。它的基本功能是解释并执行用户打入的各种命令,实现用户与Linux内核的接口。 在启动Linux系统后,内核会为每个终端用原创 2017-02-13 22:33:51 · 7036 阅读 · 0 评论 -
Linux进程通信(一)——pipe管道
本章内容采用pipe管道如何进行进程之间的通信pipe管道进程通信的规则和限制Linux中pipe管道的实现机制和管理pipe管道的结构体什么是进程通信进程通信就是两个进程之间进行数据交换,在Linux中有好几种可以进行进程通信的方式,在这篇文章中我们主要介绍最基本的进程通信方式——pipe管道。进程通信的途径进程之间交换信息的唯一途径就是传送打开的文件。管道(pipe)管道是一种最古老也是原创 2017-02-14 20:30:29 · 12991 阅读 · 2 评论 -
Linux下用GDB调试多线程程序
我们都知道GDB是Linux下面一款强大程序调试的工具,以前我们都是用GDB来调试单线程程序,今天我们来谈一谈如何用GDB来调试多线程程序把。有关GDB的基本指令在这里就不叙述了,如果感兴趣的可以看看下面这篇博客: http://blog.youkuaiyun.com/bit_clearoff/article/details/53966718调试多线程的相关指令显示所有进程info threads这条指令显示原创 2017-03-02 18:28:29 · 5136 阅读 · 0 评论 -
Linux信号处理
大家应该都了解当我们在Linux下面运行程序时,如果程序跑飞了,那我们可以通过Ctrl-C来终止掉跑飞的程序,其实,当我们按下Ctrl-C时,涉及到了信号的相关处理工作,所以,今天我们就来谈一谈Ctrl-C被后的信号处理吧。什么是信号信号其实是一种软件中断,它为程序提供了一种处理异步事件的方法,所谓的异步事件就是事件的发生在任何事件都有可能,很多重要的程序都需要对信号进行处理。在Linux中一共有多原创 2017-02-24 14:01:48 · 2165 阅读 · 0 评论 -
Linux作业控制
前面我们学习了进程,线程,信号等相关内容,今天我们要引入一个新的概念——作业,那么什么是作业呢?当我们在Linux的shell中运行程序时,这个程序就可以看成是一个作业了,可以这么说shell控制的是作业,而不是进程,而且shell还可以分前后台对作业进行控制,所以,今天我们就来谈一谈Linux下面的作业控制。什么是进程组要弄明白作业这个概念,首先我们必须要了解进程组,那么什么是进程组呢? 熟原创 2017-02-25 20:24:03 · 2368 阅读 · 0 评论 -
Linux中的netstat命令详解
前面我们学习了网络的有关基础知识,今天我们来介绍一个Linux下面的关于网络的一个重要指令——netstat.功能说明netstat是基于Netstat这个命令行工具的指令,它可以用来查询系统上的网络套接字连接情况,包括tcp,udp以及Unix套接字;另外它还能列出路由表,接口状态和多播成员等信息。主要选项关于netstat命令的选项有很多,这里我们只介绍常见选项,关于选项和选项的作用如下图:原创 2017-03-08 17:24:20 · 37275 阅读 · 1 评论 -
Linux守护进程
首先,我们在Linux的shell下面运行一条指令ps -ajx,其中 ps是查看当前系统进程状态的指令,-a显示由其它用户所拥有的进程的状态,-x显示没有控制终端的进程的状态,-j显示与作业相关的信息。我们在图中看到,图中所列举的这些都是与控制终端无关的进程,在Linux中我们称这些进程为守护进程,也叫做精灵进程,今天我们就来谈一谈Linux下面的守护进程把。什么是守护进程?守护进程也被称为精灵进原创 2017-02-26 17:00:16 · 963 阅读 · 0 评论 -
服务端主动终止连接的情况分析
前面我们已经学习了基本的网络套接字编程,下面是与本文相关的网络编程源码github连接: https://github.com/clearoff/Network-Code/tree/master/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF(1V1) 然后下面我们给出与本文相关的博客连接,因为涉及到了TCP的“三次原创 2017-03-08 22:42:55 · 23709 阅读 · 4 评论 -
Linux sed的原理和用法
什么是sed?sed是一种非交互式的流式编辑器,这里有两个关键字,非交互式和流式 非交互式就是指sed只能够在命令行下输入编辑命令来对文本进行编辑,然后在屏幕上查看输出。 流式是指sed每次只从文件中读入一行,然后对该行进行指定的处理,并将处理结果输出到屏幕上,处理完后在读入下一行。 sed对文本的过程处理如下: sed的使用命令格式sed [options] '原创 2017-04-22 17:35:46 · 2874 阅读 · 0 评论 -
Linux awk的用法
什么是awk?awk是Linux下面的一个命令行工具,相比于sed,awk不仅可以以行为单位进行处理文件,还能以列为单位处理文件;同时,它还是一种编程语言,用来在Linux/Unix下对文本和数据进行处理,数据既可以来自标准输入,也可以来自一个或者多个文件。处理文件的方式awk处理文本和数据的方式和sed相似,都是逐行扫描文件,从第一行到最后一行,然后通过正则表达式寻找匹配的特定模式的行,并在这些行原创 2017-04-22 23:15:51 · 2901 阅读 · 0 评论 -
Linux下的硬链接和软链接
文件的组成一个文件有文件名和数据,而数据在Linux上又被分成了两个部分,分别是用户数据和元数据*。用户数据:即文件数据块(block),是记录文件真实内容的地方。元数据(metadata):记录文件的附加属性(文件大小,创建时间,所有者信息等等)。文件的唯一标识inode在文件中的元数据中,有一项被称为inode号,在Linux系统下,inode号唯一的表示一个文件,那么有人会问,那么文件名呢?原创 2017-04-23 21:57:39 · 1151 阅读 · 3 评论 -
例说读者写者模型
前面我们学习了生产者和消费者模型,想了解一下的可以去看看这篇客: http://blog.youkuaiyun.com/bit_clearoff/article/details/55805884什么是读者写者模型读者和写者模型是操作系统中的一种同步与互斥机制,它与消费者和生产者模型类似,但也有不同的地方,最明显的一个特点是在读者写者模型中,多个多者之间可以共享“仓库”,读者与读者之间采用了并行机制;而在消费者原创 2017-02-20 16:22:08 · 3008 阅读 · 0 评论 -
例说生产者和消费者模型
什么是生产者和消费者模型什么是生产者消费者模型?生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制,如下图。 生产者和消费者模型必须具有的条件用一句话概括,生产者消费者模型必须具有的条件是三种关系,两类角色,一类交易场所。 一类交易场所:交易场所指的是生产者和消费者之间进行数据交换的仓库,这块仓库相当于一个缓冲区,生产者负责把数据放入到缓冲区中,消费者负责把缓冲区中的数据原创 2017-02-19 17:14:29 · 6881 阅读 · 3 评论 -
Linux下的线程控制
首先大家可以看看这篇文章,这篇文章对进程和线程的关系做了生动的讲解: http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html什么是进程前面我们学习了进程的相关知识,现在我们先来做以下回顾。 进程:进程是指在系统中能够独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成,并且每一个进程都有一个进程控制原创 2017-02-18 17:55:56 · 1493 阅读 · 0 评论 -
在Linux下实现简易进度条
本文将要概述printf的缓冲区问题;\r和\n的区别;如何实现一个简易的进度条;奇怪的现象进度条是安装和下载软件中常见的部分,它可以表示软件安装或下载了多大,能给客户一种直观的感受,今天我们就来实现一个简易的进度条,基本构思是这样的,我们定义一个大小为102的字符数组,其中100个用来存储‘#’,每跑了进度条的1%它就会在字符数组中增长一个该符号。还有两块空间用于存放’\0’,和防止死循环原创 2017-01-03 21:57:15 · 1566 阅读 · 1 评论 -
Linux文件系统的三个时间
文件的三个时间相信大家都已经很熟悉windows操作系统了,当我们在windows系统下创建一个文件时,系统同时会为这个文件建立相关的参数去描述这个文件,如图: 这些参数包括文件的大小,文件类型,位置,,以及创建、修改、访问这三个文件时间。那么我们看看再Linux系统下是否会有相似的参数呢? 在Linux下,我们可以用stat+文件名查看文件的相关参数,具体参数解释如下图: 在原创 2016-12-24 22:12:52 · 2400 阅读 · 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 · 1290 阅读 · 0 评论 -
Linux中的查找指令:find
思维导图为了使后面的讲解更加清晰,我们先附上find命令的思维导图 命令的使用下面我们对find命令的参数和选项进行测试,熟悉该指令的应用。option一.与文件时间有关的参数的指令前面我们提到了Linux文件系统的三个时间,他们分别是mtime,atime,ctime,下面我们先来进行一下简单的回顾: mtime:文件系统的修改时间,如果文件的内容被修改则会更新mtime。atime:文件原创 2016-12-31 13:42:52 · 1842 阅读 · 0 评论 -
Linux的特殊权限
Linux下的文件权限前面我们提到了关于文件的三个重要权限,那就是r、w、x这三个读、写、可执行的权限,是不是文件系统只有这三个权限呢?答案当然是否定的,首先,我们来看看下面这两个文件的权限: 我们发现这两个文件出现了s和t这两个权限,并且还分别占据了/usr/bin/passwd中所有者权限中x权限的位置以及/tmp目录中其他人的可执行权限的位置。这些权限我们称之为特殊权限,这些特殊原创 2016-12-31 20:41:38 · 1003 阅读 · 0 评论 -
exit函数和_exit函数的区别
高级I/O函数在Linux标准库中,有一套称为高级I/O函数,例如我们所熟知的printf,fopen,fread,fwrite都在此列,他们也被称为缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区,在每次读文件时会多读若干条记录,这样下次读文件时就可以直接从内存的缓冲区去读。在每次写文件时也会先写入缓冲区,当缓冲区写满,或者我们手动的刷新缓冲区,或者遇到\n,EOF这样的结束符,才会把对原创 2017-01-14 10:51:45 · 8550 阅读 · 0 评论 -
关于文件描述符(file_struct)
什么是文件描述符 文件描述符(file_struct)是一个非负整数,对于Linux内核而言,为了高效管理已经被打开的文件所创建的索引,操作系统在每个进程描述符中都提供了文件描述符表,文件描述符表中每个表项都有一个指向已经打开文件的指针;而已经打开的文件在内核中用file结构体表示,文件描述符中的指针指向file结构体;下面,我们首先来介绍一下file结构体:什么是file结构体file结构体原创 2017-01-15 23:12:18 · 6920 阅读 · 1 评论 -
Linux的gcc和g++的区别
Windows中我们常用vs来编译编写好的C和C++代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多,但我们只介绍两款常用的工具,它们分别是gcc和g++.工具用法介绍gcc和g++的用法都是一样的,在这里我们只介绍gcc: 上图介绍了相关指令和参数以及该条指令所做的对应的事情。gcc -E原创 2017-01-01 12:21:23 · 48226 阅读 · 7 评论 -
Linux下调试器GDB、makefile的使用
前面的几篇博客中我们讲解了Linux下的编辑器vim、编译器gcc和g++,今天我们来介绍一下其他常用的三种工具,它们分别是程序调试器:GDB、代码查看器:ctags、还有一个辅助工程的工具:Makefile程序调试器:GDB在windos下我们常用vs编辑器中自带的调试工具进行程序的调试,对于程序员来说,调试自己写的程序时必须的;在Linux中,我们可以使用GDB来调试已经编译好的可执行程序;注意原创 2017-01-01 19:28:14 · 9433 阅读 · 0 评论 -
Linux 进程通信IPC对象之信号量
什么是信号量信号量与其他IPC对象不同,它是一个计数器,用于多个进程对共享数据对象的访问,它的本质是一种数据操作锁,它不像消息队列和管道那样具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信。如何通过信号量来控制进程间通信为了获得共享资源,进程需要执行下列操作: (1)、测试控制该资源的信号量; (2)、若此信号量为正,则进程可以使用该资源,在这种情况下进程会将信号原创 2017-02-16 16:59:28 · 1349 阅读 · 0 评论 -
进程控制(上):进程创建,进程等待,进程终止
进程创建进程创建被定义为通过父进程创建子进程的过程。fork函数函数原型:pid_t fork(void);特点: 1.fork函数调用一次,返回两次两次返回值得区别分别是子进程当中的返回值为0,父进程当中的返回值为新建子进程的ID(将ID返回给父进程的原因是没有函数可以使父进程得到子进程的ID,这样会便于管理); 2.子进程被创建出来后,子进程是父进程的副本(子进程获得父进程数据空原创 2017-01-18 18:02:41 · 2855 阅读 · 0 评论 -
动态链接和静态链接
什么是库库从本质上来说是一种可执行的二进制文件,可以被加载到内存中运行,而根据链接时期的不同,库又可以分为静态库和动态库。链接链接就是将不同部分的代码和数据收集和组合成一个单一文件的过程,也就是把不同目标文件合并成最终可执行文件的过程,注意:这个过程不涉及内存,链接按时期的不同可以分为三种形式,分别是: 1. 编译时链接:这个其实就是我们常说的静态链接过程; 2. 装载时链接; 3. 运原创 2017-02-18 15:05:16 · 1426 阅读 · 0 评论 -
Linux常用指令思维导图
后面还会更新~原创 2017-04-24 12:30:55 · 1265 阅读 · 0 评论
分享