![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 86
___Blue_H
0和1的世界简单一点
展开
-
扩展文件系统(Ext)
文件系统文件系统是操作系统用于明确存储设备(常见的有磁盘和基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,文件系统负责为用户建立文件,存入、读出、修改转储...原创 2017-08-09 01:18:40 · 3921 阅读 · 0 评论 -
Linux C多线程编程基础
获取线程标识符 每一个线程都有一个在进程中唯一的线程标识符,在Linux中用一个数据类型pthread_t来表示,实际上这个类型是一个机器相关的无符号整型数据。 Linux提供了两个函数用于获取和比较线程标识符。#inlcude <pthread.h>pthread_t pthread_self(void); //返回值是线程自身的线程标...原创 2018-08-23 21:36:26 · 2492 阅读 · 0 评论 -
Linux C互斥锁和条件变量(POSIX标准)
与进程类似,线程也存在同步的问题,当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图,如果每个线程使用的变量都是其他线程不会读取或修改的(比如线程私有数据),就不会存在一致性问题。通常来说用户可以使用互斥量(互斥锁)或者的条件变量(条件锁)的方式来解决线程的同步问题。互斥锁 互斥锁是一个简单的锁定命令,它可以用来锁定共享资源使得其他线程无法访问。互...原创 2018-08-24 13:26:52 · 12224 阅读 · 6 评论 -
Linux进程的内存空间布局
此文也可看作是Linux下C程序的内存空间布局(虚拟地址),因为在Linux下的C编译器本质上也是一个进程,编译器再强大也得在操作系统的保护模式下运行。内存空间布局 在Linux中,进程的内存空间按低地址到高地址的顺序分为:代码段text、数据段data、bss段、堆、栈和内核数据区(命令行参数和环境变量等)。如下图所示: 从C程序的角度来说,...原创 2018-10-09 11:51:41 · 4939 阅读 · 0 评论 -
孤儿进程和僵尸进程
孤儿进程和僵尸进程与Linux的进程回收机制有关。在Linux中,使用系统调用exit函数族使进程结束运行。在用户程序中即使程序员没有写入调用exit的代码,系统也会在最后执行exit的系统调用。 在多进程环境下,子进程的结束状态应该让父进程知道,因为父进程可能会需要子进程的一些信息。程序都会有返回值,子进程的主函数会把返回值通过系统调用exit提交给内核(因此exi...原创 2018-10-09 21:42:53 · 1014 阅读 · 0 评论 -
进程间通信之Linux管道编程
管道简述管道(pipe)是Unix/Linux中最常见的进程间通信方式之一,它在两个进程之间实现一个数据流通的通道,数据以一种数据流的方式在进程间流动。在系统中,管道相当于文件系统上的一个文件,用于缓存所要传输的数据。在某些特性上又不同于文件,例如当数据读出后,管道中就没有数据了,但文件没有这个特性。管道有两个特点:·部分系统下的管道是半双工的,数据在同一时间只能向一个方向流动。从实现的角...原创 2018-11-10 19:53:03 · 3240 阅读 · 0 评论 -
Linux进程间通信总结
目录信号管道命名管道System V IPC组成标识符ftok函数结构定义特点消息队列信号量共享内存套接字Linux下的进程间通信(Interprocess Communication,IPC)方式基本上是从Unix继承而来的。对Unix发展做出重大贡献的两个实验室:AT&T的贝尔实验室、BSD在IPC方面的侧重点有所不同。前者...原创 2018-11-13 12:52:44 · 715 阅读 · 0 评论 -
进程间通信之Linux命名管道编程
命名管道管道(匿名管道)的使用局限性大,这与管道的实现机制有关。而命名管道(Named Pipe)不仅可在同一台计算机的任意不同进程之间通信,而且还可以在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。命名管道不同于管道之处在于它提供一个路径名与之关联,以命名管道的文件形式存在于文件系统中。这样,即使与命名管道的创建进程不存在亲缘关系的进程,只要能够访问该路径,就...原创 2018-11-11 11:29:07 · 691 阅读 · 0 评论 -
进程间通信之Linux消息队列编程
消息队列消息队列是一种以链表为结构组织的数据,存放在Linux内核中,是由各进程通过消息队列标识符来引用的一种数据传送方式。每个消息队列都有一个队列头,利用结构struct msg_queue来描述。队列头中包含了该消息队列的基本信息,包括消息队列键值、用户ID、组ID、消息数目等,甚至记录了最近对消息队列读写进程的PID。消息队列的队列头存在于内核空间中,结构定义如下:struct...原创 2018-11-11 21:10:07 · 987 阅读 · 0 评论 -
进程间通信之Linux信号量编程
信号量信号量(Semaphore)是一种用于实现计算机资源共享的IPC机制之一,其本质是一个计数器。信号量是在多进程环境下实现资源互斥访问或共享资源访问的方法,可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,进程/线程必须获取一个信号量;一旦该关键代码段完成了,那么该进程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个进程释放信号量。信号量有两种应用形...原创 2018-11-12 16:03:03 · 8147 阅读 · 1 评论 -
Linux C多进程编程基础
关于进程概念相关的内容请打开链接,本文所介绍的是进程的POSIX标准。进程的关系 Linux中的所有进程都是相互联系的,进程之间的的从属关系有父/子关系和兄/弟关系。 Linux内核创建了进程标号为0以及进程标号为1的进程。其中PID为1的进程是初始化进程init,Linux中的所有进程都是由其衍生而来的,在shell下执行程序启动的进程则是shell进程的子进...原创 2018-08-20 23:15:51 · 3894 阅读 · 0 评论 -
Linux的信号机制
信号机制信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。信号的本质是软件层次上对中断的一种模拟(软中断)。它是一种异步通信的处理机制,事实上,进程并不知道信号何时到来。在头文件<signal.h>中定义了64种信号,这些信号的名字都以SIG开头,且都被定义为正整数,称为信号编号。可以用“kill -l”查看信号的具体名称。上图中编...原创 2018-08-23 13:53:42 · 6640 阅读 · 1 评论 -
Linux C网络编程基础
目录Linux套接字结构定义Linux C的网络基础操作函数字节顺序转换函数族IP地址转换函数族域名转换函数Linux网络套接字操作函数创建套接字描述符函数绑定套接字函数建立连接函数倾听套接字切换函数接收连接函数关闭连接函数套接字读写函数套接字地址获取函数发送和接收函数Linux套接字结构定义Linux在头文件<sys/so...原创 2018-08-12 16:23:09 · 10907 阅读 · 1 评论 -
文件系统与目录树的关系
由Ext文件系统的知识点击打开链接可以知道,在Linux系统下,每个文件(不管是一般文件还是目录文件)都会占用一个inode,且可依据文件内容的大小来分配多个block给文件使用。目录文件的内容是记录文件名,而一般文件才是记录实际数据的地方。那么目录与文件构成的目录树在文件系统(在此以Ext系列文件系统为例进行讨论)中是如何记录数据的呢?目录在Linux下的Ext文件系统新建一个目录时,文...原创 2017-08-09 23:40:06 · 4193 阅读 · 0 评论 -
Linux文件与目录管理的常用命令
特殊目录. 代表此层目录.. 代表上一层目录- 代表前一个工作目录~ 代表“目前用户身份”所在的主文件夹~account 代表account这个用户的主文件夹(account是账户名称)所有的目录都会存在的两个目录是“.”和“..”,根目录的上一层目录就是此层目录,也就是根目录本身。目录管理cd:切换目录cd是change directory的缩原创 2017-08-18 02:30:02 · 5270 阅读 · 0 评论 -
FHS简述及Linux目录一般配置
FHS简述Filesystem Hierarchy Standard(文件系统层次化标准),是为了规范Linux distributions开发团队或个人对于文件、目录的配置而制定的标准。根据FHS(http://www.pathname.com/fhs)的官方文件指出,其主要目的是希望让用户可以了解到已安装软件通常放置于那个目录下,所以其希望独立的软件开发商、操作系统制作者以及想要维护系统的...原创 2017-08-04 00:11:44 · 808 阅读 · 0 评论 -
Linux的硬链接与软链接(符号链接)
Linux的文件链接方式分为硬链接与软链接(也叫符号链接)两种,在Linux中链接也被视为文件来看待,一样可以被执行、编辑和访问。对系统中的应用程序而言,对链接的操作就是对原始文件的操作,所以链接不是副本。如果熟悉Linux的文件系统与目录树(相关博客链接扩展文件系统、文件系统与目录树的关系),知道这两者间的联系的话可以很容易理解这两种文件链接方式的原理和区别。文件系统告诉我们,任何一个文件(...原创 2017-08-20 22:53:57 · 1156 阅读 · 0 评论 -
Linux文件权限
本文除必要的地方会分开讨论外,将目录视为特殊的文件类型一起讨论。用户与用户组在Linux中,用户是能够获取系统资源的权限的集合。而用户组则是将若干用户划分在一起形成的集合,但其成员(用户)之间对文件所拥有的权限不一定相同。Linux是一个支持多用户多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作,为了考虑每个人的隐私权以及每个人喜好的工作环境,也为了保持Linux系统资源分配的...原创 2017-08-06 22:15:44 · 644 阅读 · 0 评论 -
《鸟哥的Linux私房菜 基础学习篇(第三版)》习题与解析(四)
第四部分 Linux使用者管理第14章 Linux账号管理与ACL权限设置·root的UID与GID是多少?基于这个理由,我要让test这个账号具有root的权限,应该怎么做?答:root的UID与GID都是0,UID只有0和非0两种,0代表系统管理员。所以要让test这个账号具有root的权限,只要把test的UID和GID都改为0即可。·假设我是一个系统管理员,我有一个原创 2017-08-28 00:08:51 · 3003 阅读 · 0 评论 -
《鸟哥的Linux私房菜 基础学习篇(第三版)》习题与解析(三)
第三部分 学习shell与shell script第10章 vim程序编辑器·我用vi打开某个文件后,要在第34行向右移动15个字符,应该在一般模式中执行什么命令?答:先按下34G移动光标到第34行,再执行15[→]或15j。·在vi打开的文件中,如何去到该文件的页首或页尾?答:执行1G或gg去往页首,执行G去往页尾。·在vi打开的文件中,如原创 2017-08-16 17:32:28 · 3257 阅读 · 0 评论 -
《鸟哥的Linux私房菜 基础学习篇(第三版)》习题与解析(二)
第二部分 Linux文件、目录与磁盘格式第6章 Linux的文件权限与目录配置·请说明/bin与/usr/bin目录所放置的执行文件有何不同之处。答:/bin主要放置在开机时,以及进入单用户维护模式后还能够被操作的命令,至于/usr/bin则是大部分软件提供的命令放置处。主要区别在于是否与开机过程有关。 ·请说明/bin与/sbin目录所放置的执行文件有原创 2017-08-05 17:15:54 · 3484 阅读 · 0 评论 -
《鸟哥的Linux私房菜 基础学习篇(第三版)》习题与解析(一)
第一部分 Linux的规则与安装第一章 Linux是什么?原创 2017-08-01 21:59:57 · 6634 阅读 · 0 评论