Linux
文章平均质量分 72
SZL-C
潜力股
展开
-
Linux的权限管理和A C M time
如果有一个存在的目录,当我们想进入目录的时候,那么至少需要的权限是 x ,当我们想要在目录中创建文件的时候,至少需要的权限是 w和x, 我们同时还想让其显示出来,那么还需要 r 权限。1、modify time:最后一次修改文件或目录的时间。2、change time :最后一次改变文件或目录的时间。3、access time:最后一次访问文件或目录的时间原创 2017-03-21 15:53:24 · 527 阅读 · 0 评论 -
线程同步与互斥及死锁问题
线程我们之前已经总结过了,就是进程的一个执行分支。既然是一个执行分支,那么我们就可以定义两个线程,在定义一个全局变量,初始值置为0,让这两个线程,同时对这个全局变量进行++处理,1000次,100000次,100000000次,之后,你会发现,数值越大,你得到想要的结果的几率就越小。这是为什么呢?这个全局变量可以被这两个线程同时看见,那么他就是临界资源了,但是线程对临界资源访问,却不原子性的,那么出原创 2017-06-12 12:32:06 · 824 阅读 · 0 评论 -
线程安全和可重入函数
一、线程安全什么是线程安全呢?线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。那么,相反的,线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。例如:如果你的代码所在的进程中有多个线程同时运行代码,而且运行的结果和单线程的运行结果是一样的,原创 2017-07-14 22:18:55 · 302 阅读 · 0 评论 -
crond和crontab调研
crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond是crontab的守护进程。1、定时任务的种类 at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。 crontab 需要启动一个服务crond才行,crond服务通过cr原创 2017-07-20 11:23:51 · 310 阅读 · 0 评论 -
NAT技术与代理服务器原理
NAT技术定义:NAT网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。NAT原理 NAT网络地址转换(原创 2017-07-20 12:50:50 · 439 阅读 · 0 评论 -
Linux:vim主要命令总结
学习C语言已经有一段时间了,这段时间我不仅在Windows下用VS编程。同时,也用Linux编程,其中我学了几条语句,都是简单的语句,总结一下而已。 x 删除当前光标所在的一个字符。 :wq 存盘+退出。 dd 剪贴光标所在的当前行。 p 粘贴剪贴板:help 进入帮助界面,显示相关命令。 :q 退出help :qa 退出vima 在光标后插入原创 2016-12-20 22:22:35 · 376 阅读 · 0 评论 -
端口号调研、URG和PSH、及TCP的计时器
端口号端口号是用来标识目的主机当中的唯一网络进程,因此IP地址+端口号=》套接字;套接字可以确定唯一的一个进程。Tcp/Ip协议中引入一种叫做“套接字”的应用程序软件,有了这样一种技术,一台电脑就可以与任意一台具有套接字的电脑通信。端口的分类:从性质来分: 1)公认端口:0—1024,紧密绑定一些特定的服务,这类端口不可重新定义它的作用对象,例如80号端口对应http,23号端口对应Telnet服原创 2017-07-23 23:26:13 · 515 阅读 · 0 评论 -
TCP三次握手和四次挥手
建立TCP需要三次握手,断开TCP需要四次挥手,那么这是为什么呢?下面我们来一一解释为什么要三次握手 首先我们先来了解一下三次握手是怎样建立的:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了在数据传输过程中,可能会发生丢包的情况,这可能在1、2、3的原创 2017-07-26 22:31:45 · 285 阅读 · 0 评论 -
Linux进程描述符:task_struct结构体
进程是什么?如果有人问你,进程是什么,你该如何回答呢?正在执行的程序;程序的执行实例;能分配处理器并由处理器执行的实体。进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。那么进程和程序的区别是什么呢?1、进程在内存上,程序在硬盘上 2、进程比程序多了很原创 2017-04-14 22:50:13 · 825 阅读 · 0 评论 -
线程
线程:是进程的执行分支。线程是子进程内部运行的,这里的内部说的是,初始进程创建的地址空间。但是Linux下并没有真正意义上的线程,只有进程模拟的线程,因为Linux并没有给线程一个专门的结构体,而且,CPU也不需要区分进程和县城,他只需执行就行了。所以,线程又叫轻量级进程。线程的特点:在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有原创 2017-06-10 23:19:49 · 335 阅读 · 0 评论 -
进程间通信——共享内存
我们都知道,每一个进程在物理内存中都对应一块单独的地址空间,但是今天我们来看一个不一样的东西——共享内存那么什么是共享内存呢?共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。今天我们就来创建共享内存,不过看这些之前,我们先来了解几个函数://创建共享内存int shmget(key_t key, size_t size, int原创 2017-06-10 21:13:52 · 310 阅读 · 0 评论 -
gdb安装、vim配置
gdb的安装:昨天使用vim的时候遇到了一些问题,分享一下:首先说一下我使用gdb调试的时候出现的问题吧!在使用vim写程序的时候避免不了的就是调试,在Linux下,调试使用的是gdb。不过,当我输入命令的时候,出现了报错,就是gdb这个命令不存在,多试了几次发现,命令写的没错,那么重点来了。我发现,我没有安装gdb,这就尴尬了,然后就是百度了,发现这条命令会让你自动安装,不过前提是你的虚拟机得连上原创 2017-04-04 17:28:29 · 881 阅读 · 0 评论 -
Linux中的find指令以及粘滞位 小结
在Windows中我们怎么搜索一个文件,如果知道位置的话,我们通常会直接用鼠标点击它的文件路径,然后一步步找到。那么在Linux中怎么找到一个文件呢?find命令会帮你找到,Linux中find命令在目录结构中搜索文件,并执行指定的操作。Linux为find命令提供了相当多的茶渣条件,所以,find的选型很多,需要花费大量的时间来了解这个命令。同时,它的功能很强大,即使系统中含有网络系统文件(NFS原创 2017-04-04 16:42:29 · 868 阅读 · 0 评论 -
Linux下的小程序:进度条
当我们再上传或者下载什么东西的时候,通常会显示一个界面,这个界面显示的是你加载的多少,那么在Linux下有没有进度条呢?今天就来实现一下吧!首先应该出现的就是一个进度,另外还有一个是百分比。百分比还好说,关键是进度,这是一个逐渐增加的形式,而且还是一直显示一个界面。逐渐增加还好说一点,我们只需要写一个循环就可以了,关键是一直显示的是最新的显示信息,这个就用到我们以前学的一个函数了,fflush(),原创 2017-04-05 20:05:33 · 580 阅读 · 0 评论 -
文件描述符(fd)与FILE结构体
文件描述符内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。我们知道,在Linux中有一个说法:一切皆文件,而文件描述符又是内核访问文件的桥梁,可以想象文件描述符的中药材程度。既然文件描述符是一个非负整数,那么到底是几呢?又有什么规律可循呢?首先我们原创 2017-05-14 15:31:54 · 966 阅读 · 1 评论 -
模拟实现~僵尸进程和孤儿进程
僵尸进程首先说一下,什么是僵尸进程呢?当进程退出并且父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。那么接下来我们就来模拟实现一个僵尸进程吧:下面看一下运行结果:僵尸进程是一种特殊的进程,这种进程光听名字就知道很可怕,那么我们就来看看它的可怕之处吧。我们知道僵尸进程的产生是因为进程退出时父原创 2017-04-27 16:40:51 · 1190 阅读 · 1 评论 -
进程间通信——管道
我们都知道,进程的运行具有独立性,那么如果想让进程之间通信,该如何实现呢?今天我们就来看几种进程间通信(IPC)。说到进程间的通信,它的本质就让不同的进程看到同一块资源,这也是进程间通信的前提。一、管道进程间通信最基本的机制:管道–>由pipe创建#include <unistd.h>int pipe(int filedes[2]);调用pipe函数时在内核中开辟一块缓冲区(管道)用于通信其中参数原创 2017-06-09 16:32:16 · 327 阅读 · 0 评论 -
进程间通信——消息队列
上一次我们看的管道是单向通信,如果你想用管道进行双向通信,可以创建两个管道。下面我们再来看一个可以双向通信的——消息队列(msgqueue)消息队列提供了一种从一个进程向另一个进程发送一个有类型数据块的方法。创建消息队列用的函数是:int msgget(key_t key, int msgflg);其中,key(消息队列标识符)可以看成端口号,管道用的是文件描述符来判断确定父子进程使用的是同一个管道原创 2017-06-10 19:47:02 · 397 阅读 · 0 评论 -
进程间通信——信号量
在说信号量之前我们再来复习一下几个概念:1、把两个或多个执行流所能访问的同一块内存资源叫做临界资源2、把访问临界资源的代码叫做临界区3、在任意时刻只有一个执行流可以访问临界区,这种现象叫做互斥4、一件事,要么做了,要么没有做,这叫做原子性现在我们来看下什么事信号量信号量:信号量的本质是一种数据操作锁(计数器)、用来负责数据操作过程中的互斥、同步等功能。 那么为什么要使用信号量呢?使用信号量为了防止多原创 2017-06-10 20:09:42 · 287 阅读 · 0 评论 -
Linux软链接和硬链接
硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一所以,再说软硬链接之前我们先从inode入手来了解下文件系统文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件转载 2017-08-22 22:51:22 · 465 阅读 · 0 评论