
linux
文章平均质量分 75
皓皓松
与坚持梦想者同行!
展开
-
【Linux】黏滞位
本篇博文旨在介绍Linux中黏滞位的作用及其用法;通过设置黏置位和不设置黏滞位两种情况的对比,从而说明黏滞位的作用黏滞位的作用设置黏滞位便是保证即使一个普通用户具有写权限,但也不能随意删除其他用户里面的文件;只允许文件的拥有者及root用户可以进行删除为什么需要黏滞位?不用黏滞位会怎么样?1、以root用户身份创建一个目录 test,赋予其777的权限2、以原创 2017-04-01 15:42:25 · 537 阅读 · 0 评论 -
【网络】TCP服务器的实现
socket编程基本概念在TCP/IP协议中,IP地址+端口号标识个唯一的一个进程,“IP地址+端口号”就是socket在TCP协议中,建立连接需要两个进程各自有一个socket标识符,这两个socket组成的socket pair就标识着唯一的连接相关概念介绍网络字节序首先呢,我们都知道内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件的偏移也原创 2017-07-11 11:32:31 · 496 阅读 · 0 评论 -
【网络】arp协议介绍以及Shell脚本进行arp的编写
ARP协议基本概念地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议原创 2017-06-30 11:31:04 · 1375 阅读 · 0 评论 -
【网络】UDP服务器的实现
UDP服务器实现的基本步骤(1)利用socket函数创建套接字(2)服务器用bind进行IP和端口号的绑定(3)不需要设置监听状态(4)绑定后直接读写相关函数recvfrom作用用来数据的接收头文件#include#include函数原型int recvfrom(int sockfd, void* buf, ssize_t len, int fl原创 2017-07-11 17:17:48 · 2015 阅读 · 0 评论 -
【Linux】IPC通信之共享内存
共享内存概念共享内存指的是,在多处理器的计算机系统中,可以被不同的CPU访问大量内存。由于多个CPU需要快速访问存储器,所以必须对存储器进行缓存。在缓存中的数据被更新后,其他处理器也可能要进行读取,共享内存就需要立即更新,否则不同的处理器将读取到不同的数据。共享内存是Unix、Linux下多进程通信的一种方式之一,这种方法通常用于一个程序的多进程间通信。实际上多个进程可以通过共享内存来进行通信原创 2017-06-12 14:45:04 · 431 阅读 · 0 评论 -
【Linux】线程
线程的基本概念线程,有时候被称作是轻量级线程(LWP),是程序流的最小执行单元。一个标准的线程,是由线程ID,指令指针,寄存器集合和堆栈组成。线程也具有阻塞,就绪和运行三种基本状态。Linux下线程的特点1、线程是进程的一个实体,是被系统独立调度和分配的基本单位。2、线程不拥有自己的资源,只有一点运行中比不可少的资源。3、线程与和它同属于一个进程的所有其他线程共享进原创 2017-06-13 15:49:33 · 343 阅读 · 0 评论 -
【Linux】信号的基本概念
什么是信号生活中有各类的信号,就拿简单的例子来说吧,上下课的铃声,它可以提示我们哪个时间该上课或者下课。但是当我们收到上课铃声的信号后,到底是去上课,还是去玩,这就是看自己的决定方式了。这就表明我们可以忽略该信号,但是我们是知道该信号的意义的,虽然我们没有遵守,是去玩耍了。或者是墨迹一会再去上课,这就表明生活中的信号是可以不立即处理的。而计算机中的信号也是类似,进程可以发送信号,也可以接受原创 2017-06-25 10:18:36 · 524 阅读 · 0 评论 -
【Shell】Shell语法总结以及简易内存条的实现
基本语法Shell文件的开头Shell的开头需要写成 #!/bin/bash#!这个符号是表示,让系统去调用后面的的参数来解释执行该文本的程序除此之外,还有下列可以用的解释器/bin/sh/usr/bin/es/usr/bin/ksh/bin/ksh/usr/bin/rc/usr/bin/tcsh/bin/tcsh/usr/bin/esh/bin/dash原创 2017-07-14 17:52:35 · 568 阅读 · 0 评论 -
【Linux】死锁概念总结
什么是死锁如果一组进程(或者线程)中的所有进程(或者线程)都在等待该组中其他进程(或者线程)才能引发的事件,那么这组进程(或者线程)就是死锁的死锁出现的情况举例(1)线程自锁,自己将自己锁住当进程(线程)第一次访问一个资源时,对该资源进行加锁;如果该进程(线程)又对该资源试图使用而进行加锁时,由于锁之前已被自己加上,便会等待锁的释放。这就永远处于挂起状态了,便产生了死锁。(2)原创 2017-06-14 16:00:31 · 476 阅读 · 0 评论 -
【Shell】命令代换
命令代换基本概念命令代换的基本思想是,先执行指定的内部指令,然后将其结果替换出来,重新组成新的命令行。两种命令代换的格式(1) 反引号 ``#!/bin/bashDATE=`date`echo $DATE(2) $()#!/bin/bashFILE=$(ls)echo $FILE两者的区别和联系1、反引号适用于所有Unix系统,但是$()原创 2017-07-15 16:16:37 · 440 阅读 · 0 评论 -
【Shell】截取字符串
基本概念在进行脚本编程的过程中,总会遇到截取字符串的问题(就比如从字符串中截取出QQ等信息)好在,Shell下给了我们一些截取字符串的方法下面我来依次介绍这几种方法,并用例子进行验证截取字符串的几种方法(1)# 号结果:删除左边字符,保留右边字符(2)## 号截取结果:删除左边字符,保留右边字符。(3)%号截取结果:删除右边字符,保留左边字符原创 2017-07-15 16:47:18 · 1169 阅读 · 0 评论 -
【Linux】生产者消费者模型介绍
基本概念利用单链表进行模型模拟原理代码实现#include#include#include#include#includepthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t mycond = PTHREAD_COND_INITIALIZER;//定义节点的结构体typedef st原创 2017-06-15 16:09:10 · 500 阅读 · 0 评论 -
【Linux】线程安全和可重入函数
线程安全所谓线程安全,就是当多个线程访问同一个数据时,不会造成数据出错。其实它是采用了加锁的机制来保证在一个线程访问该数据时,其他的线程不可以访问,直到等到那个线程访问结束才可以访问。而线程不安全,就是没有采用加锁的机制来保证这一点。测试代码#include#includeint g_count = 0;void* threadCount(void* arg){ int原创 2017-06-28 08:27:42 · 789 阅读 · 1 评论 -
【Linux】信号的阻塞和递达
几个基本概念信号未决:从信号的产生到信号递达的这段时间中的状态,称为信号未决信号递达:收到信号,进行信号的处理信号阻塞:阻塞一种信号后,这种信号将永不递达;只有解除阻塞才可以递达易错点:信号阻塞和信号忽略的概念信号忽略指的是收到了信号,但是不进行任何处理。而信号阻塞是根本收不到信号。信号阻塞表、信号未决表、以及自定义函数表如何处理在解除阻塞前产生的多次信号原创 2017-06-27 09:54:55 · 752 阅读 · 0 评论 -
【Linux】子进程的异步等待方式
SIGCHLD当子进程退出时,它会向父进程发送SIGCHLD信号,该信号的默认处理方式为忽略,当父进程以阻塞方式等待时,它不能处理自己的工作。我们自定义一个捕捉信号的函数myhandler#include#include#include#include#includevoid myhandler(int sig){ printf("得到一个信号 : %d 进程号原创 2017-07-22 16:13:05 · 1686 阅读 · 0 评论 -
【C语言】实现一个变色的进度条
实现一个如上的进度条要求1、依次多打印一个'#'2、并后面标注百分比3、还可以进行变色实现进度条(未变色)strip.c#include#include#define M 100int main(){ char ch = '#'; char str[M] = {0}; int i = 0; char symbol[4] = {'|','/','-',原创 2017-03-31 20:39:30 · 2426 阅读 · 0 评论 -
【Linux】进程终止以及atexit()函数的介绍
进程终止的八种方式:1、从main()函数返回2、调用exit()函数3、调用_exit()或者_Exit()4、最后一个线程通过调用pthread_exit5、最后一个线程通过启动例程返回6、接收到一个信号并且终止7、最后一个进程对取消请求作出相应8、调用abort()函数在上面进程终止的八种方式当中,其中前5种是正常退出的,然而最后三种是异常退出的ate原创 2017-04-21 09:40:30 · 526 阅读 · 0 评论 -
【linux】对于文件权限的理解
本篇博文旨在介绍linux下的权限问题;介绍了Linux下,查看权限、修改权限等方法;并通过分别在超级用户(root)和普通用户下进行测试,探索不同等级的用户进入目录需要的权限,以及进入后,显示和创建文件需要的权限Linux下的权限文件访问者的分类文件访问权限的分类如何查看权限如何修改权限如何修改文件的所有者进入一个目录需要什么权限超级用户普通用户进原创 2017-03-16 21:09:24 · 1969 阅读 · 0 评论 -
【linux】如何查看文件的创建、修改时间
本篇博文旨在介绍Linux下查看文件时间的方法;并介绍如何使用touch指令来进行文件时间的创建以及修改如何查看文件的时间信息stat//图片三种时间的介绍ATime 文件的最近访问时间CTime 文件的属性最近修改的时间MTime 文件的内容最近修改的时间如何利用touch指令进行文件的时间修改?touch指令的介绍 1、利用touch指令创建一个原创 2017-03-17 14:37:10 · 136266 阅读 · 3 评论 -
【Linux】find指令
本篇博文旨在介绍find指令的功能,以及命令的参数格式;最后介绍了常用find指令的几种情况find功能find指令用来查找符合特定要求的文件find命令的格式find [-path] -options [-print -exec -ok ]path : 代表需要在该目录以及其子目录中进行查找~ : 表示当前用户的目录以及其子目录/ : 表示根目录及其子目录.原创 2017-04-01 14:21:14 · 316 阅读 · 0 评论 -
【linux】进程概念的介绍
本篇博文,旨在介绍进程的一些概念1、什么是进程?进程的概念是什么?对于操作系统来说:进程是正在运行的程序进程是可以分配处理器并由处理器执行的实体而对于Linux内核来说:进程是可担当分配系统资源的实体2、如何描述一个进程如何描述一个进程呢?这里我们要介绍一下PCB了PCB,全称为 进程控制块PCB是用来标识一个进程的,它包含了该进程的各个信息在Linux原创 2017-04-19 14:48:54 · 487 阅读 · 0 评论 -
【Linux】进程间通信IPC之管道通信
本篇博文,旨在讲述进程间通信方式中的管道通信;讲述了匿名管道通信和命名管道通信两种方式,并用代码进行了验证进程间通信提出疑问每个进程有自己独立的用户地址空间,一个进程的全局变量在另一个进程中可以看到吗?我们用下面这个程序来进行测试验证代码验证结果结论由此,我们可以论证:在父进程中的全局变量,如果在子进程中去改变这个全局变量,则子进程中被改变的原创 2017-05-14 14:35:35 · 373 阅读 · 0 评论 -
【Linux】shell的简单模拟
Shell的概念Shell俗称壳,是Linux操作系统的外壳Shell又称为命令行解释器,它接受用户输入的命令,然后调用相关的程序模拟实现Shell步骤1、打印Shell提示符,给用户输入的提示2、定义一块空间接受用户的输入字符,以便对用户输入的内容进行处理3、定义一块指针数组,将用户输入的内容按照空格依次存储4、创建子进程进行程序替换如何模拟实现重定向的功能1原创 2017-05-25 15:00:33 · 556 阅读 · 0 评论 -
【Linux】IPC通信之消息队列
消息队列概念消息队列提供了一个进程将一个数据块发送到另一个进程的方法。相比于管道的同步与阻塞,消息队列很好的解决了这个问题管道通信是基于字节流的,然而消息队列发送的是一个数据结构,即IPC对象消息队列的总字节数是有上限的,消息队列的总数也是有一定上限的IPC对象的内容(消息队列,信号量和共享内存共同的IPC对象)消息队列的结构与消息队列有关的函数消息原创 2017-05-27 16:07:29 · 468 阅读 · 0 评论 -
【Linux】IPC通信之信号量
什么是信号量信号量本质是一个数据操作锁,本身并不可以进行数据的通信。而是通过其他资源进行进程间的通信,本身是一种外部标识符。信号量在此操作中负责数据的同步、互斥等功能为什么需要信号量信号量的工作原理Linux下的信号量机制(1)获得信号量(2)销毁信号量(3)PV操作原创 2017-06-05 19:12:45 · 673 阅读 · 0 评论 -
【Linux】PCB中的task_struct结构体
task_struct结构体task_struct是进程控制块PCB中的一个结构体,用来存储进程的各种属性信息这里面有进程状态,进程调度,进程标识符,进程通信,进程链接,时间和定时器,文件系统,虚拟内存信息以及页面管理信息,对称多处理机信息,上下文信息等结构体内部信息介绍1、进程状态linux中的进程有多种状态,在进程的运行过程中,进程会随着调度在多种状态进行转换进程的状态原创 2017-05-21 16:12:48 · 944 阅读 · 0 评论 -
【Linux】守护进程
守护进程基本概念守护进程,又成为精灵进程。它是在后台运行的一种特殊的进程。它独立于控制终端而完成某种独立的任务或等待处理某些发生的事件。守护进程的特点普通进程是由用户进行创建,在运行结束或者用户注销后便会终止;而守护进程不受用户登录注销的影响,是时时刻刻都在跑的进程。Linux下,用户和系统进行交流的界面称之为终端。每一个终端开始运行的进行都会依附这个终端,这个终端就会被这些进原创 2017-06-28 16:11:12 · 378 阅读 · 0 评论 -
【Linux】进程间的关系以及终端的概念
进程间关系进程组每个进程都有自己的进程ID,除此之外,每个进程也都属于一个进程组。进程组是一个进程或者多个进程的集合。通常他们和同一个作业有联系,可以接受来自同一个终端的信号。每一个进程组都有一个组ID,这个ID就是该进程组组长的进程ID组长进程可以创建一个进程组,并创建该组中的进程。当一个进程组中的所有进程死亡时,该进程组才会终止。当一个进程组的组长死亡时,只要有原创 2017-06-28 17:16:41 · 1063 阅读 · 0 评论 -
【Linux】NAT技术介绍以及代理服务器
NAT基本概念NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法原创 2017-06-30 10:46:07 · 633 阅读 · 0 评论 -
【Linux】模拟实现sleep函数
本次用到的相关函数介绍alarm函数头文件#includeunsigned int alarm(unsigned int seconds);作用调用alarm函数可以设定一个闹钟,也就是告诉内核在seconds秒之后给当前进程发SIGALRM信号, 该信号的默认处理动作是终止当前进程。 返回值这个函数的返回值是0或者是以前设定的闹钟时间还余下的秒数。pause函原创 2017-06-30 17:55:03 · 661 阅读 · 0 评论 -
【Linux】文件描述符和FILE结构体
文件描述符文件描述符是一个整数,用来标记每一个的打开的文件和socket。第一个打开的文件的文件描述符是0,第二个是1...以此论推在Unix/Linux系统下,0号文件对应的是标准输入(stdin),1号文件对应的是标准输出(stdout),2号文件对应的是标准错误(stderr)每个进程都在其PCB中保存着一份文件描述符表,而文件描述符作为这个表的索引可以让我们快速的查到每个表原创 2017-05-08 16:14:41 · 807 阅读 · 0 评论 -
【Linux】周期任务crontab
crond和crontab的区别crond是一个指令,而crontab是一个文件,用于存放指令的文件crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。简介cron原创 2017-07-23 10:46:37 · 2508 阅读 · 0 评论