Linux
cm_cyj_1116
学习中
展开
-
Linux下的粘滞位详解
1.产生粘滞位的原因:Linux下有一个用于存放临时文件的目录 /temp,每一个用户产生的临时文件都存放在 /temp目录下面,而且每个用户都对于这些文件具有写权限,为了防止用户对于除自己外的其他用户的文件进行删除操作,所以产生了粘滞位。2.什么是粘滞位:上图所示的t就是所谓的粘滞位;对于权限为777的目录设置粘滞位以后,每个用户只能删除自己创建的文件,可以保护用户的文件原创 2017-01-01 21:53:28 · 1356 阅读 · 0 评论 -
网络端口号
网络端口一.提出的背景:在多进程的环境下,为了解决两个主机之间的通信,但是源主机不知道要发送消息给目的主机的哪一个进程,所以,必须使用端口号来确定目的主机上的唯一的一个进程。注:此篇文章所谈的是协议端口,也就是软件端口。端口号应用于传输层。二.分类:(一)按照端口号分为3类 (1)公共端口:从0-1023,总共1024个这些端口的通讯都明确表明了某种服务的协议;原创 2017-06-19 21:38:13 · 1325 阅读 · 2 评论 -
CRC循环冗余校验
CRC(循环冗余校验码)校验循环冗余校验码(Cycle Redundancy Check)是一种被广泛采用的多项式编码,又称多项式码。循环冗余校验码具有良好的数学结构,易于实现,发送端编码器和接受器端检测译码器的实现较为简单;同时,具有十分强的检错能力,特别适合于检测突发性的错误。计算主要用到两个多项式:f(x) 和G(x)。f(x)是一个k阶多项式,其系数是待发送的k+1原创 2017-06-19 23:49:48 · 825 阅读 · 0 评论 -
生产者--消费者模型之互斥锁和条件变量
生产者-消费者模型三种关系:(1)生产者与生产者:互斥关系;(2)生产者与消费者:互斥与同步的关系;(3)消费者与消费者:互斥关系;两种角色:(1)生产者;(2)消费者;一种交易场所:单链表;注:交易场所通常指的是生产者生产的数据以及消费者消费的数据所保存的数据结构;互斥锁:定义互斥锁:全局定义以及初始化;pthread_mutex_t mutex =原创 2017-06-01 23:53:50 · 2016 阅读 · 1 评论 -
生产者---消费者模型之信号量
信号量:(1)定义信号量:sem_t semaphore; //定义一个名为semaphore的信号量;(2)初始化信号量 int sem_init(sem_t *sem, int pshared, unsigned int value);原创 2017-06-04 15:09:01 · 1126 阅读 · 2 评论 -
守护进程
守护进程概念:守护进程也成精灵进程,是运行在后台的一种特殊的进程,也就是一个后台作业,独立于控制终端并且周期性的执行某种任务或者等待处理某些发生的事件。Linux系统启动时会启动很多系统服务进程,这些系统服务没有终端,不能直接和用户交互。其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,7*24小时一直运行。特点:原创 2017-06-21 11:26:09 · 368 阅读 · 0 评论 -
信号的产生以及处理
信号kill -l :查看系统中的信号列表。 1 -31号信号为普通信号; 34-64号信号为实时信号;信号产生的方式:(1)键盘产生信号:eg:ctl + c(2)异常产生:异常产生信号导致进程终止;当一个进程由于异常被终止时:可以选择把进程的用户空间数据保存到硬盘上,文件名通常是core;这叫做 core Dump(核心转储);注:a:保存这些数据可原创 2017-06-05 17:01:55 · 834 阅读 · 0 评论 -
进程等待
进程等待:(一)pid-t wait(int* status);参数:status为一个输出型参数,用于获得所等待进程的退出信息;返回值:成功返回的是所等待进程的pid,大于0。 失败返回-1.(二)pid_t waitpid(pid_t pid,int* status,int options) ;参数:pid 为所等待进程的pid;原创 2017-06-11 15:05:12 · 450 阅读 · 0 评论 -
I/O多路转接之select
selectselect系统调用是用来让我们的程序监视多个文件句柄的状态变化的,程序会对于句柄关心的事件进行等待,直到被监视的文件句柄一个或者多个的状态发生了变化。注:文件句柄,其实就是文件在所对应的进程中的文件描述符。文件句柄关心的事件:(1)读事件------------->数据;(2)写事件------------->存放数据的缓冲区;(3)异常事件-----原创 2017-07-29 16:50:31 · 694 阅读 · 1 评论 -
NAT技术和代理服务器
NAT技术:产生的原因:(1)由于IPv4版本的IP地址数量现在已经比较紧缺,不能满足正常的使用,NAT技术可以让局域网中的中的主机拥有少量合法的公有IP,使用NAT将内部地址转换为合法的公有地址;(2)防止外部主机对于内部主机的攻击;定义:NAT(Network Address Translation),网络地址转换;属于接入广域网技术,是一种将私有地址转化为合法IP地址原创 2017-07-20 20:00:55 · 1303 阅读 · 0 评论 -
初识TCP/IP及使用套接字进行网络编程
通过对于TCP/IP协议以及套接字的学习,编写了最简单的客户端/服务器端程序:1.单进程版本的服务器:#include#include#include#include#include#include#include#include#includeint startup(char* ip,int port){ int sock = socket(AF_INET,原创 2017-07-25 21:48:01 · 1337 阅读 · 0 评论 -
进程间通信之信号量(三)
信号量信号量是记录和统计临界资源数目的计数器;(一)创建信号量:信号量的申请是以信号量集为单位的;int semget(key_t key,int nsems,int semflag);返回值:信号量集的标识符;参数:key:用key_t ftok(const char* pathname,int proj_id)来获取;nsems:表示要创建的这个信号原创 2017-05-22 19:26:07 · 421 阅读 · 0 评论 -
进程间通信之消息队列(二)
消息队列消息队列是基于消息的,且读取方式不一定是FIFO;消息队列提供了一种从一个进程向另一个进程发送一个有类型数据块的方法;消息队列可以实现双向通信;消息队列是用链表实现的;消息队列数据结构 : struct msqid_ds { struct ipc_perm msg_perm; /* Ownership and permiss原创 2017-05-19 21:14:29 · 900 阅读 · 0 评论 -
线程的互斥
线程需要互斥的原因:由于多个线程同时在进程的地址空间内部运行,所以进程的大部分资源相对于线程而言都是共享的,所以当多个线程同时对于某个临界资源进行操作时,就会出现问题,所以,线程之间对于临界资源的访问需要互斥的进行访问,以便造成不确定的结果。范例:#include#includeint _val = 0;void* thread_run(){ int i=0; while原创 2017-05-30 18:43:15 · 1467 阅读 · 5 评论 -
Linux命令之find命令详解
find命令(1)find命令用于在结构目录(文件树)中搜索文件,并执行指定的操作;(2)find命令在一个较大的文件系统中查找文件时,时间消耗非常大,因此大多数情况下:对于find命令的执行放在后台 执行;(3)命令格式:find pathname -optionsfind原创 2017-01-01 19:20:34 · 1941 阅读 · 0 评论 -
Linux命令之stat的三个时间详解
stat的使用及其解释stat命令是查看文件的详细信息的Linux的命令。File为stat文件的名称 ;Size为文件的大小;Access: 2016-12-27 23:28:44.309995899 -0500:时间指的是最后一次访问文件的时间(没有进行任何操作,仅仅是访问);Modify:2016-12-27 23:28:44.309995899 -0500:原创 2016-12-27 23:10:32 · 1084 阅读 · 0 评论 -
Linux之touch命令详解
在Linux中,touch命令主要是用于新建一个不存在的文件或者是对于文件的时间戳进行修改;(1)使用touch命令新建一个不存在的文件使用touch新建了一个文件,然后使用ls -a进行文件目录进行打印,没有找到change.txt文件;(2)使用touch指令对于文件的时间戳进行修改;touch -a:touch -a test.c对于文件的存取时间进行修改原创 2016-12-28 00:13:37 · 3440 阅读 · 1 评论 -
Linux命令之cd
cd 命令格式:cd [dirname]作用:切换当前目录到dirname;cd ~:进入用户目录;cd -:返回最近访问目录;cd ..:返回上级目录;cd进一个目录,需要啥权限?cd进入一个目录之后可以创建普通文件并且可以显示普通文件什么的权限?cd进入一个目录之后可以创建文件,需要用户对于该目录有‘w’写权限,查看普通文件的权限则对于该原创 2017-03-23 20:41:03 · 738 阅读 · 0 评论 -
Shell脚本中命令代换
Shell脚本中的` `:原创 2017-03-24 11:00:38 · 563 阅读 · 0 评论 -
Linux之进程的PCB——task_struct
task_struct:task_struct是Linux系统中的任务结构指针,定义在头文件include/linux/sched.h中,保存着用于控制和管理进程的所有信息,主要包括进程当前的运行状态信息,信号,进程号,父进程号,运行时间累计值,正在使用的文件和本任务的局部描述符一级卡任务状态段信息。task_struct结构:struct task_struct{ long原创 2017-04-10 17:29:51 · 703 阅读 · 0 评论 -
进程间通信之共享内存(四)
共享内存共享内存是将同一份物理内存映射到不同进程的地址空间中去;共享内存是不带任何互斥和同步机制的进程间通信;共享内存是所有进程间通信中最快的;注:共享内存不需要数据的拷贝;共享内存的生命周期随内核;共享内存可以实现进程间的双向通信;(一)创建共享内存int shmget(key_t key,size_t size,int shmflg);参数:key: k原创 2017-05-24 21:14:00 · 718 阅读 · 0 评论 -
Shell工具之sed
shell小工具之sedsed:流式文本编辑器sed工具的原理:sed编辑命令的格式为:sed ‘/pattern/action’filepattern是正则表达式,action是编辑操作注:当一条命令只有action没有正则匹配时:对于所操作文件的每一行都进行action操作;sed有两种规范:Basic规范和Extend规范;sed默认是Basic规范,es原创 2017-04-24 13:06:09 · 564 阅读 · 0 评论 -
辨析文件描述符和文件指针
文件指针文件指针C语言中用一个指针变量指向一个文件,这个指针称为文件指针。定义说明文件指针的一般形式为:FILE *指针变量名文件指针的类型为FILE*类型的,FILE为C库中定义的一种结构体,包含文件的各种信息。FILE结构体的定义:typedef struct{ short level; unsigned flags; char fd;原创 2017-05-07 11:25:19 · 621 阅读 · 0 评论 -
进程间通信之管道通信(一)
管道Pipepipe是系统调用;pipe只能进行进程间的单向通信;(1)创建管道: 匿名管道的创建:int pipe(fd[2]); 当一个进程调用pipe成功后,则这个进程以读方式和写方式分别打开一个pipe文件,那么:fd[0]保存读方式打开的文件描述符,fd[1]保存以写 方式打开的文件描述符原创 2017-05-18 09:28:21 · 932 阅读 · 0 评论 -
CMake的安装及其简单使用
一、CMake的安装 (本文是在Ubuntu 17.04下的安装,安装的版本为 2.8.9)1、卸载原有系统上安装的cmake,便于安装更高版本的cmake。(如果不卸载系统自带的,直接安装,可能会出现错误。) apt-get autoremove cmake2、去官网下载cmake的最新版的安装包 官网地址: https://cmake.org/download/ 注:下载和自己...原创 2018-02-12 13:33:27 · 86295 阅读 · 6 评论