linux学习之旅
呢喃无音
这个作者很懒,什么都没留下…
展开
-
条件变量
条件变量使线程同步中一个很重要的概念,在之前的文章中我们也多次提及过。条件变量条件变量(cond)使在多线程程序中用来实现“等待--->唤醒”逻辑常用的方法,是进程间同步的一种机制。条件变量用来阻塞一个线程,直到条件满足被触发为止,通常情况下条件变量和互斥量同时使用。一般条件变量有两个状态:(1)一个/多个线程为等待“条件变量的条件成立“而挂起;(2)另一个线程在“条件变量条件成立时...原创 2019-06-01 14:26:46 · 4352 阅读 · 4 评论 -
Linux学习之旅(14)-----文件I/O
C中文件I/O操作和系统文件I/O的关系?在C/C++中我们也学过关于文件的操作函数,例如:fopen(),fclose()等。其实Linux中的文件I/O和这些也差不多,那为什么还要学习Linux的文件I/O?那这两者有什么联系和关系那?为什么我们使用printf()函数就可以将一句话打印在显示器上?当我们使用printf()函数时,实际调用的是操作系统的printf()函数(应用层,这...原创 2019-03-02 21:08:16 · 225 阅读 · 0 评论 -
Linux学习之旅(13)-----静态库和动态库
库的简介库函数是将函数放到库中,供别人使用的一种方式。一般库中存放的代码都是经过优化稳定性很好的代码。这样做的目的是为了让程序员减少编写代码的时间,从而将时间用于如何取解决问题而不是如何编写代码。库分为两种:(1)静态库、(2)动态库。静态库.a(win系统下为.lib)和动态库.so(win系统下为.dll)。根据在链接阶段如何处理库,将库分为静态库和动态库。静态库:指在程序编译时将...原创 2019-03-01 19:29:05 · 1213 阅读 · 0 评论 -
Linux学习之旅(12)----vim配置和gcc
一、vim的配置上次在文件的基本操作中我们讲了vi和vim的基本使用,其实在CentOS系统下这两个就是一个东西,无论是vim还是vi都是vim。首先我们来介绍一个命令。which //查看可执行文件的路径下来我们分别看看vi和vim可执行文件的路径:通过结果问我们可以看到vim是vi的别名,他们的可执行文件的路径都是/user/bin/vim。初始的vim虽然也很好,不够...原创 2019-02-27 22:05:55 · 232 阅读 · 0 评论 -
Linux学习之旅(11)----网络管理
网络管理1、ifconfigifconfig相当于windows ipconfig是用来查看网卡下信息。2、ifconfig ens32 down关闭网卡,主要这里的ens32为网卡的名称。需要换称自己的网卡名称。在执行ifconfig ens32 down后网络标识就是自动消失。3、ifconfig ens32 up开启网卡。执行ifconfig ...原创 2019-02-25 21:01:02 · 375 阅读 · 0 评论 -
Linux学习之旅(10)----用户管理
这篇问文章主要讲述了用户管理和sudo命令以及sudo命令如何配置。用户管理Linux系统是一个多任务的分时操作系统,任何一个要使用系统资源的用户,都必须要想管理员申请一个账号,然后用这个账号的身份进入系统。用户的账号主要有两个用途:(1)帮助管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问。(2)另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账...原创 2019-02-24 23:43:53 · 366 阅读 · 0 评论 -
Linux学习之旅(9)-----进程管理
本片文章讲述了进程管理中常用的几个命令,并在文章末尾讲解了如何配置用户的环境变量。进程管理一、whowho命令用于显示系统中当前使用者有哪些,显示的内容包括使用者ID、使用的终端、上线时间、CPU使用量等。who -[HiumqswT]参数说明:(1)-H:显示各栏位的标题信息列。(2)-i或-u:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标识记为"."'...原创 2019-02-24 17:59:28 · 445 阅读 · 0 评论 -
Linux学习之旅(8)------磁盘与压缩包管理(rar命令安装)
磁盘管理一、mountmount [-t vfstype] -o options device dir参数说明:-t vfstype 指定文件系统的类型,通常不必指定,mount会自动选择正确的类型。常用的类型有:(1)光盘或者光盘镜像iso9600(2)DOS fatl文件系统:msdos(3)windows 9x fat32文件系统:vfat(4)window...原创 2019-02-24 00:06:22 · 288 阅读 · 0 评论 -
Linux学习之旅(7)-------系统命令(补充)
1、touchtouch [OPTION]... FILE...(1)如果文件存在将文件的访问及修改时间都更新为目前的时间。(2)如果文件不存在,则创建一个字节数为0的文件。2、lnln [参数] [源文件或目录] [目标文件或目录]参数说明:(1) -i:交互模式,文件存在则提示用户是否覆盖。(2)-s:建立软连接(符号链接)(3)-d:允许r...原创 2019-02-22 21:11:02 · 151 阅读 · 0 评论 -
CentOS安装VMware Tools
VMware Tools的作用:(1)虚拟机ubuntu系统的分辨率,可设置为自动适应窗口,设置后Linux系统的分辨率可随vmware软件窗口的大小而改变。这样不论虚拟机的大小怎样改变,Linux的屏幕大小都会自动适应。(2)可以直接将文件从主机上拖到虚拟机上。(3)鼠标在主机和虚拟机之间可以自由转换。还有许多功能,这里就不一一列举了。VMware Tools的安...原创 2019-02-21 22:55:41 · 228 阅读 · 0 评论 -
Linux学习之旅(6)-----yum命令(yum源的修改)
yum(Yellow dog Updater,Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有的依赖的软件包,无须繁琐的一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。yum语法yum [option...原创 2019-02-21 19:28:37 · 168 阅读 · 0 评论 -
Linux学习之旅(4)---文件的基本操作
内容整理自菜鸟教程和c语言中文网的Linux教程Linux vi/vimvi是Liunx系统自带的文书编辑器,但目前使用较多的是vim编辑器,vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。vi/vim的使用基本上vi/vim共分为3中模式,分别为命令模式(Command mode)、输入模式(Insert mode)和底线模式(Last line m...原创 2019-02-20 14:43:36 · 212 阅读 · 0 评论 -
Linux学习之旅(5)-----目录的处理和操作
(*文章内容整理自菜鸟教程和c语言中文网的Liunx教程)目录的本质也是文件,它的功能时用来保存文件及其相关的信息。所有的文件,包括普通文件,设备文件、目录文件都会被保存到目录中。常用的处理目录的命令:(1)ls:列出目录(2)cd:切换目录(3)pwd:显示目前的目录(4)mkdir:创建一个新的目录(5)rmdir:删除一个空的目录(6)cp:复制文件或目录...原创 2019-02-20 17:08:45 · 150 阅读 · 0 评论 -
linux学习之旅(3)----文件的基本属性
在Linux中,有三种基本文件类型:(1)普通文件、(2)目录、(3)设备文件一、普通文件普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制文件对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。二、目录目录可以包括普通文件和特殊文件、目录相当于Windows和MAC中的文件夹。三、设备文件设备文件也被称为特殊文件,设备文件...原创 2019-02-18 21:19:43 · 358 阅读 · 0 评论 -
linux学习之旅(2)------系统启动和系统目录
Linux系统启动过程Linux启动时我们会看到许多启动信息,其过程可以分为5个阶段:(1)内核的引导(2)运行init(3)系统初始化(4)建立终端(5)用户登录系统内核引导当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入/boot目录下的内核文件。运行initinit进程是系统所...原创 2019-02-15 21:09:44 · 246 阅读 · 0 评论 -
linux学习之旅(1)----Linux简介
操作系统是什么?操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。linux是什么?Linux是一套免费使用和自由传播的类Unix操作系统。...原创 2019-02-15 15:13:15 · 348 阅读 · 0 评论 -
Linux学习之旅(15)-----文件I/O(续)
阻塞和非阻塞阻塞和非阻塞这是指的的对象实际上是进程。由于多个进程在并发执行共享系统资源,致使它们在运行过程中呈现出间断性的运行规律,所以进程在其生命周期中可能会具有多种状态。一般而言,每个进程只至少对应以下三种转态的其中一种:(1)就绪状态(Ready):是指进程已处于准备好运行的状态,即进程已分配到除CPU以外的所有必要资源,只要拿到CPU就可以马上执行。如果系统中存在许多处于“就绪状态...原创 2019-03-03 20:10:56 · 198 阅读 · 0 评论 -
Linux小练习(1)
一、递归分解目录将某个目录下的文件全部展示出来,包括文件名、文件大小等信息。先介绍几个关于linux目录操作的函数。DIR* open(const char* fileName);函数说明:(1)作用:打开一个目录。(2)参数:目录路径名。(3)返回值:成功:DIR*是一个文件指针(结构体),其中包括文件的一些特有的信息,例如文件(目录)大小等。...原创 2019-03-06 22:11:33 · 171 阅读 · 0 评论 -
Linux学习之旅(16)----进程
程序、进程和线程:程序:一组指令的有序集合,程序本身没有任何运行的含义,它只是一个静态的实体。进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个...原创 2019-03-09 13:25:15 · 162 阅读 · 0 评论 -
linux学习之旅(32)---I/O 多路复用(epoll)
epoll的产生上一篇文章中我们讲解了多路I/O复用中的select、poll,它们存在的主要问题有两个:(1)线程不安全(2)函数不能告诉应用程序具体需要处理那一路I/O,需要应用程序轮询判断。基于select和poll存在的这些问题,于是在poll出现的5年之后,也就是2002年,大神Davide Libenzi实现了epoll。epoll是I/O多路复用的最新一个实现,epo...原创 2019-04-18 23:03:17 · 167 阅读 · 0 评论 -
Linux学习之旅(31)---I/O多路复用(select、poll)
I/O多路复用的引入我们知道在C/S模型中,通常都是一个服务器和多个客户端的,那么这样就无可避免的产生了这样一个问题,就是服务器如何管理多个客户端。这里包括处理客户端的链接,处理客户机的数据传输等。每个客户端的链接和数据什么时候来是根本无法确定的,那该怎么办那?这时就产生了三种方法:(1)将read、accept等阻塞函数修改为非阻塞函数,即轮询模型。(2)使用多进程或多线程,将每...原创 2019-04-17 23:08:32 · 220 阅读 · 0 评论 -
Linux学习之旅(30)-----并发服务器模型
并发服务器模型引入在循环服务器模型文章中讲解了循环服务器的实现方式和循环服务器模型存在的问题,那么针对这些问题应该如何改进那?循环服务器模型的处理方式是串行,也就说必须需要前一步做完,后一步才能继续做,这样就会极大的浪费资源。那么要如何改进循环服务器那?我们可以改变思路:如果这些事情之间互不影响,各自执行各自的事情,这就是并行的思想。与串行服务器不同,并发服务器对客户端的服务请求进行并...原创 2019-04-11 21:53:38 · 192 阅读 · 0 评论 -
Linux学习之旅(29)----循环服务器模型
使用套接字编程的服务器模型主要包括:循环(轮询)服务器模型、并发服务器模型和IO复用服务器模型。套接字函数错误处理在前几篇文章中的程序中,没有对程序进行出错处理,这是一个非常不好的习惯,在这里我们将出错函数进行了封装。下面直接使用封装之后的函数就好了。#ifndef SOCKETERRORHANDING#define SOCKETERRORHANDING#include <...原创 2019-04-09 19:14:16 · 300 阅读 · 0 评论 -
Linux学习之旅(28)---C/S模型(UDP)
在Linux学习之旅(27)---套接字编程基础知识讲述了套接字编程的一些基础知识和C/S模型(TCP)。在运输层有两个协议面向连接的TCP和无连接的UDP。在这一张我们将讲述C/S模型如何使用UDP实现。关于UDP的特点可以通过Linux学习之旅(25)-----网络协议来了解。UDP编程框架1、UDP编程框架图在UDP编程的框架模型中,没有connect(),listen()和...原创 2019-04-07 16:35:12 · 253 阅读 · 0 评论 -
linux学习之旅(26)-----网络编程基础
在上一篇文章Linux学习之旅(25)----网络协议中介绍了常用的几种网路协议的格式,这篇文章将简述网路的编程需要的知道的一些基础知识。TCP的运输连接管理TCP的连接和释放是每次面向连接的通讯中必不可少的过程。因此,运输连接就有三个阶段,即连接建立、数据传输、和连接释放。运输连接的管理就是使运输的连接和释放都可以正常地进行。TCP建立连接(三次握手)在TCP建立连接的过程中需要...原创 2019-03-31 21:20:06 · 139 阅读 · 0 评论 -
Linux学习之旅(27)----套接字编程基础知识
什么是套接字(Socket)?TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字或插口。这里可以将套接字理解为一个“中间人”的角色,在TCP/IP通讯模型中,两台主机是不能直接进行通信的,需要通讯必须经过套接字,通讯双方将需要通讯的信息交给各自的套接字,然后由这两个套接字进行通信,套接字是支持网络通讯的基本单元。套接字包含网络通信的基本信息:(1)源主机IP地址...原创 2019-04-02 18:41:06 · 386 阅读 · 0 评论 -
Linux学习之旅(25)-----网络协议
网络协议报文格式一、应用层1、超文本传输协议(HTTP)报文格式:HTTP的报文有两类:请求报文和响应报文。请求报文-----从客户向服务器发送请求报文。响应报文-----从服务器到客户的回答。从上图中我们就可以看出HTTP的报文(请求和响应)都是由三部分组成的。两个报文的差别就是请求行不同。开始行:用于区别是请求报文还是响应报文,在开始行中三个字段都使用空...原创 2019-03-28 23:09:37 · 1055 阅读 · 4 评论 -
Linux学习之旅(24)----网络基础
OSI网络分层结构:网络结构的标准模型OSI,是由国际互联网标准化组织(ISO)定制的网络分层模型。一共分为7层,每一层和它的上下两层是分开的,这种方式使得各层之间是相对独立的(无论它的上层下层如何修改都不会影响到本层),每层只为它上一层提供服务。同时各层之间的规则是相互对立的。例如数据的格式、通信的方式等,这就被称为协议。不同主机相同层之间是对等的,例如主机A和主机B中的应用层是相同...原创 2019-03-27 16:59:12 · 144 阅读 · 0 评论 -
linux学习之旅(23)----线程同步
线程同步在多个线程同时访问一个资源时,在一个时间段只允许有一个线程占用资源,其他进程在这期间只能等待,就被成为线程同步。即一个进程在操作资源时,其他线程不允许对资源进行操作。程序:将一个数从0加到10000,使用两个线程实现,每个线程分别加5000#include <stdio.h>#include <pthread.h>int count=0;voi...原创 2019-03-23 18:32:09 · 130 阅读 · 0 评论 -
linux学习之旅(22)----内存空间映射(多进程、多线程拷贝)
mmap()函数用来将文件或者设备空间映射到内存中,这样对文件的读写就可以直接通过指针来操作,而不需要read/write函数。这样就会加快文件操作的速度。void *mmap(void *addr,size_t length,int prot,int flags,int fd,off_t offset);函数功能:将文件或者设备空间映射到内存中。参数说明:(1)addr:文...原创 2019-03-22 20:08:25 · 1493 阅读 · 1 评论 -
Linux学习之旅(21)-----线程
进程和线程的区别和联系(1)进程是资源分配的最小单位,线程是最小的执行单位。(2)线程是进程的一部分,如果没有进行显示的进程分配,可以认为进程是单线程的,如果进程中建立了线程,则可以认为系统是多线程的。(3)多进程和多线程是两个不同的概念,虽然两者都是并行完成功能。但是,多个线程之间像内存、变量等资源可以通过简单的办法共享,多进程则需要通过进程间通信的方式共享。(4)进程有进程控制...原创 2019-03-18 22:59:47 · 408 阅读 · 0 评论 -
Linux学习之旅(20)-----信号(2)
在上一篇文章Liunx学习之旅(19)---信号中提到系统对信号的处理方式主要有三种:(1)默认(2)忽略(3)捕捉。默认就是当系统接收到某个信号时,去执行信号的默认状态,而忽略就是对这个信号不予处理。那什么时捕捉,信号又该如何捕捉那?信号的捕捉设定:从上图中我们可以看出系统并没有在接到信号的那一刻就直接去处理,而是在从内核返回用户空间的途中去处理该信号。那如何才能捕捉信号那?这里...原创 2019-03-15 23:47:45 · 754 阅读 · 0 评论 -
Linux学习之旅(19)-----信号(1)
信号:Linux的信号机制是从unix的基础上发展来的,在linux中一共有64个信号(实际只有62个,另外两个被废弃了),其中前32是从unix中继承来的,用来控制进程。另外32个是liunx的信号有被称为实时信号,用来操作硬件。在linux系统中通过kill -l命令可以查看这写信号:操作系统对信号的处理一般有3种方式:一、默认 二、忽略 三、捕捉默认方式:操作系统为每...原创 2019-03-14 23:16:57 · 973 阅读 · 0 评论 -
Linux学习之旅(17)----进程间通信
进程通信进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程间交换一定的信息,所以被称为进程通信,但这只是低级的进程通信。原因在于:(1)效率低,每次只能从缓冲区中取得一个消息。(2)通信对用户不透明。在进程之间要传送大量的数据时,应当利用OS提供的高级通信工具,该工具最主要的特带你的是:(1)使用方便。OS隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级...原创 2019-03-10 13:34:43 · 303 阅读 · 0 评论 -
git的常用操作
一、Git简介1、什么是gitGit是一个开源的分布式版本控制系统,可以有效、高效地处理从很小到非常大的项目版本管理,也是目前世界最先进的分布式版本控制,是由Linux的创始人为了管理Liunx的内核时开发出来的。廖雪峰老师GIT教程Git支持的功能:(1)协同修改 可以多人同时修改服务器上的同一个文件(2)数据备份 不仅可以保存目录和文件当前状态,还能保存每一个提交过的历...原创 2019-08-01 23:40:41 · 240 阅读 · 0 评论