![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 68
Celia_喵喵
这个作者很懒,什么都没留下…
展开
-
shell
1、查询某个接口访问ip及次数grep ‘限制条件’ access.2020-07-01.log | awk ‘{ips[$1]++};END{for(i in ips){print i,ips[i]}}’ | awk ‘$2>100’ | sort -k2 -rngrep ‘/api/external/wireless/newMessageCount’ access.2020-07-01.log | awk ‘{ips[$1]++};END{for(i in ips){print i,ips原创 2020-07-01 16:56:32 · 227 阅读 · 0 评论 -
线程同步
多进程或多线程访问临界资源时,必须进行同步控制。多进程或多线程的执行并不完全是绝对的并行运行,有可能主线程需要等待函数线程的某些条件发生。多线程之间有几个特殊的临界资源:全局变量、堆区数据、文件描述符。线程间同步控制方式:信号量互斥锁原创 2017-10-28 23:35:08 · 213 阅读 · 0 评论 -
消息队列
消息队列是消息的连接表,存放在内核中并由消息队列标识符标识。操作:1、创建/打开:int msgget(key_t key, int flag);参数:成功返回消息队列ID,失败返回-1.2、int msgctl(int msgid, int cmd);原创 2017-10-20 09:18:28 · 268 阅读 · 0 评论 -
信号量有关函数的封装
基于上一篇《信号量通信》,完成sem.h #ifndef _SEM_H #define _SEM_H #include #include #include #include #include #include #include #include int semid; union semun { int val;原创 2017-10-25 01:10:39 · 456 阅读 · 0 评论 -
信号量通信
在介绍信号量通信之前,首先需要明确几个概念:1、临界资源:同一时刻只能被一个进程访问2、临界区:访问临界资源的代码区域3、原子操作:任何情况下都不能被打断的操作,只能等完成该操作再进行其他操作。4、内核对象:用于进程间通讯时,多进程能够访问同一资源的记录。如果有多个进程要访问临界资源,但同一时刻只能有一个进程访问,这时总要有一个先后顺序。信号量的作用也就原创 2017-10-19 23:35:15 · 719 阅读 · 0 评论 -
C语言实现su命令
su命令的功能为切换用户,首先看一下系统su命令的效果:su命令为:su+用户名,没有输入参数时默认为root用户。由普通用户切换到root用户时,需要输入密码,由root用户切换到普通用户时不需要输入密码,而且密码输入时在屏幕上是不显示的。根据这些特点逐步实现速命令。1、密码不显示设置通过设置termios类型的数据结构中的值和使用一小组函数调用,就可以对终端接口进行原创 2017-10-15 21:32:42 · 3234 阅读 · 0 评论 -
网络编程
在一次服务中提供数据或服务的称为服务器,获取数据的称为客户端。在网络基础中讲到有许多协议,那这里就面临协议的选择,TCP还是UDP?先来看看TCP和UDP的区别:TCP:面向连接的(服务器和客户端之间维护一条专有线路) 可靠的(数据无差错、不丢失、不重复、并且按序到达) 流式服务UDP:无连接(每次都要探寻线路) 不可靠的数据报服务原创 2017-11-02 22:22:07 · 302 阅读 · 0 评论 -
网络编程(二)
一、流式服务和数据报服务1、字节流服务:发送端send()只是将数据写到TCP发送缓冲区中,然后将发送缓冲区中的数据打包成报文段发送出去。接收端又将接收到的报文段写到缓冲区中,最后recv()直接取数据。 字节流服务特点:数据没有明确分割(由底层做分割),不分一定的报文段,什么时候想发便可将写入缓冲区的数据,进行打包再发送,即send()与recv()的次数不完全对等,没原创 2017-11-07 22:46:42 · 278 阅读 · 0 评论 -
共享内存
进程加载到内存上运行,共享内存就是在内存上开辟一块空间,在各个进程中都有指针直接指向开辟的内存区域,访问时当做本进程中的一个内存控制直接操作。共享内存也有内核对象来管理共享的内存区域,进程通过内核对象得到共享内存ID,进程中有一个指针指向共享内存首地址,将其连接起来。完成之后在断开连接。操作:1、创建/获取:2、连接:3、断开连接:4、删除内核对象:原创 2017-10-25 13:06:23 · 369 阅读 · 0 评论 -
TCP
在《网络编程》中提到TCP的三个特点:面向连接、可靠、流式服务。现在具体看一下其特点。一、面向连接原创 2017-11-04 13:07:43 · 317 阅读 · 0 评论 -
TCP拥塞控制
TCP模块需要提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是拥塞控制。拥塞控制有四个部分:慢启动、拥塞避免、快速重传和快速恢复。拥塞控制的是发送端向网络一次连续写入(受到其中的第一个数据的确认之前)的数据量,称为SWND。因为发送端最终以TCP报文段来发送数据,所以SWND限定发送端能连续发送的TCP报文段的数量。这些TCP报文段的最大长度(仅指数据部分)称为SMS原创 2017-11-12 23:54:42 · 450 阅读 · 0 评论 -
主机字节序和网络字节序
字节序分为大端字节序和小端字节序。大端字节序是指一个整数的高位字节(23~31bit)存储在内存的低地址处,地位字节(0~7bit)存储在内存的高地址处。小端字节序则相反,整数的高位字节存放在内存的高地址处,低位字节存放在内存的低地址处。如下图所示:那么,如何判断是大端字节序还是小端字节序呢?bool IsLittle(){ short a=1; retu原创 2017-11-03 10:10:51 · 379 阅读 · 0 评论 -
进程
有没有好奇过计算机程序是怎样运行的呢?在这里就简单介绍一下下。首先是利用“高级程序设计语言”,例如C、C++、Java等,进行编程,但是计算机并不认识高级语言编写的程序,编好的程序必须通过编译器和汇编器编译成计算机能够识别的语言。其次,机器语言程序需要加载到内存,形成一个运动中的程序,即“进程”这需要操作系统的帮助。进程需要在计算机芯片CPU上执行才算真正在执行,而将进程调度到CPU上由操作系统完成原创 2017-08-27 22:48:57 · 234 阅读 · 0 评论 -
IA32体系32位Linux系统虚拟地址映射
我们经常会打印临时变量地址,那到底打印的是逻辑地址?线性地址?物理地址?虚拟地址?临时变量到底存放在物理内存的哪个位置?现代操作系统如Linux都采用内存保护模式来管理内存。IA32架构的CPU规定地址映射过程是:逻辑地址——>线性地址——>物理地址。那么,Linux如何进行地址映射?CPU相关寄存器IA-32架构中提供了10个32位和6个16位的寄存器,这些寄存器分为三类:原创 2017-12-12 16:00:30 · 988 阅读 · 0 评论 -
线程
进程就是运行的程序,是为了在CPU上实现多道编程而有的概念。但是进程在同一时刻只能干一件事,如果想同时干多件事,就要用到线程。线程可以运行在不同的处理器上,从未提高进程的执行效率。在前面讲进程我们知道,进程是一组有序指令、资源、数据的集合,今天要讲的线程就是进程内部的一条执行序列(执行流)。每个进程至少有一条执行序列,main函数的执行体。进程可以通过线程创建n条线程,这些新创建的线程原创 2017-10-27 12:14:25 · 245 阅读 · 0 评论 -
工程管理——makefile文件
工程管理--makefile文件原创 2017-08-22 18:33:13 · 408 阅读 · 0 评论 -
fork函数
一个现有进程可以通过fork函数,即pid_t fork(void),创建新的进程。原进程称为父进程,通过fork函数创建的新进程称为子进程。fork函数调用一次返回两次,在父进程中返回子进程的pid,在子进程中返回0,出错返回-1。 可以通过getpid()得到进程的pid,通过getppid()得到父进程的pid。产生一个子进程可以在任意时刻通过getppid()得到父进程的pid,但原创 2017-09-02 20:35:21 · 477 阅读 · 0 评论 -
进程管理命令
ps 显示进程信息ps -f 全部列出ps -e 显示全部进程信息& 将进程放倒后台sleep + n 睡眠n秒钟sleep + n + & 后台睡眠Ctrl + c 强制结束前台进原创 2017-09-04 22:14:55 · 305 阅读 · 0 评论 -
文件的压缩与解压
方案一这种方案压缩与解压都要2步完成。1、打包:tar + cf + name.tar + filelist 对每一部分简单解释一下: c:创建; f:指定目标为文件; name.tar:包文件(打包以后的文件名); filelist:要打包的文件。2、压缩:gzip + name.tar1、解压原创 2017-09-04 22:50:41 · 254 阅读 · 0 评论 -
文件系统
1、Linux文件层次结构在Linux根目录下有21个子目录,每个子目录的作用下文中有介绍,在这里简单介绍几个命令: ls :显示当前目录下的文件;ls -a :显示当前目录下的所有文件;文件名以“.”开头的为隐藏文件;“.“代表当前目录;“..” 代表上一级目录;pwd :显示当前目录的绝对路径;绝对路径:从根目录开始列出所有路径;相对路径:从当前目录开始列出所有路径。cd :切换原创 2017-08-23 23:29:06 · 266 阅读 · 0 评论 -
有名管道通信
多个进程间数据相互交换,即进程间通信有以下方式:信号通信、管道通信(有名管道通信和无名管道通信)、信号量通信、消息队列通信、共享内存(或共享储存)、套接字通信。如果进程A输入“hello world”,进程B读取并输入,有什么方式可以做到呢?之前学过父子进程,在父子进程之间全局变量、栈区变量、堆区变量都是不共享的,但是文件偏移量是共享的,文件可以做到但是有缺陷:1、不能同步,也原创 2017-10-18 23:18:50 · 854 阅读 · 0 评论 -
无名管道通信
在上一篇《有名管道通信》中,介绍了有名管道通信,相对于有名管道通信而言,今天说一下无名管道通信。有名管道通信在文件目录树中有标示,而无名管道通信是没有标示的。相对于有名管道而言,无名管道在使用时产生,使用后释放,并不会在系统上留下任何痕迹。正是由于这一特点,无名管道通信是有限制的,只能应用于父子进程之间。因为子进程是复制父进程的文件表数组(浅拷贝)。无名管道操作:1、创原创 2017-10-19 22:39:42 · 506 阅读 · 1 评论 -
系统运行级别
0 关机1 单用户模式2 不带网络的多用户模式3 完全的多用户模式,优先使用字符界面4 undef5 xll 图形界面模式6 重启init 0 关机init 6 重启 root用户才可以,不能设为默认模式halt 关机shutdown -h n n分钟之后关机reboot 重启原创 2017-10-20 00:31:14 · 272 阅读 · 0 评论 -
用户管理
Linux储存用户信息的三个文件:/etc/passwd/etc/group/etc/shadow1、passwd 用户信息通过命令vim /etc/passwd 打开可以找到用户信息,如图所示。2、group 组信息通过命令vim /etc/group 打开可以找到组信息,如图所示。由于我的系统中只有一个用户,所以后边没有显示用户名。3原创 2017-10-20 00:32:34 · 273 阅读 · 0 评论 -
strtok函数
1、函数原型char*strtok(char *str,const char *delimiter);2、函数功能将字符串分割成一个个片段,参数str为被分割的字符串,参数delimiter为分隔符,例如char str[] = "/home/myl/shell"; char delimiter[] = "/"; 表示以/为分隔符把str分割,分割以后为home myl shell。当原创 2017-10-11 20:38:03 · 298 阅读 · 0 评论 -
网络基础
将计算机连接起来组成一个网络,将网络连接起来称为互联网,Inter网是最大的互联网。原创 2017-11-07 15:40:12 · 209 阅读 · 0 评论 -
线程安全&线程同步
strtok函数原创 2017-11-03 19:17:19 · 234 阅读 · 0 评论 -
文件操作命令
文件操作主要有创建、删除、拷贝、剪切、重命名、修改属性、查看文件内容、编辑文件内容等。本文介绍了相应的操作命令。原创 2017-08-24 19:15:12 · 417 阅读 · 0 评论