linux
issac199854
种子不是一朝一夕就能发芽结出果实 而你手中的苹果耽搁了时间就不再好吃了
展开
-
基础I/O--文件描述符
一、文件描述符1.文件I/O操作函数系统调用函数:(1)open函数原型:int open(const char *pathname,int flags,mode_t mode);第一个参数为文件名,第二个参数为按照上面方式打开,第三个时如果文件不存在要创建文件的权限。flags:打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。...原创 2018-11-26 17:09:24 · 491 阅读 · 0 评论 -
pread和pwrite函数
函数原型ssize_t pread(int fd, void *buf, size_t count, off_t offset);ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);与write与read的区别实际作用与read+lseek函数作用相同,区别是pread执行后,不会改变文件指针的偏...原创 2019-07-08 16:27:51 · 2841 阅读 · 0 评论 -
操作系统内存管理
一、进程与内存:1.代码段:代码段用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像,代码段需要防止在运行时被非法修改,所以只允许读取操作,不允许写操作,—它是不可写的2.数据段:数据段用来存放可执行文件中的已初始化的全局变量,换句话说就是存放程序静态分配的变量和全局变量3.BSS段:BSS段包含了程序中未初始化的全局变量,在内存中bss段全部置零4.堆:堆是用于存放进程运...原创 2019-06-30 13:58:21 · 524 阅读 · 4 评论 -
进程分配内存的两种方式—brk()和mmap()
内存分配的原理从操作系统角度来看,进程分配内存有两种方式,分别由两个系统调用完成:brk()和mmap()1.brk是将数据段的最高地址指针_edata往高地址推;2.mmap是在进程的虚拟地址空间中(堆和栈中间,文件映射区)找一块空闲的虚拟内存。这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和...原创 2019-06-30 16:08:39 · 1787 阅读 · 0 评论 -
ARP协议
ARP报文各字段含义ARP报文字段总共有28个字节1.硬件类型:占2个字节,表明ARP实现在何种类型的网络上。Ø 值为1:表示以太网。2.协议类型:占2个字节表示要映射的协议地址类型。Ø IP:08003.硬件地址长度:占1个字节,表示 MAC地址长度,其值为6个字节。4.协议地址长度:占1个字节,表示IP地址长度,此处值4个字节5.操作类型 :占2个字节,表示ARP数据包类型。...原创 2019-06-30 20:15:43 · 738 阅读 · 0 评论 -
ICMP协议
ICMP协议详解ICMP协议是一个网络层协议一个新搭建好的网络,为了检测网络是否畅通;但是IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。所以就需要一种协议来完成这样的功能——ICMP协议ICMP协议的功能1.确认IP包是否成功到达目标地址2.通知在发送过程中IP包被丢弃的原因我们注意以下两点:1.ICMP是基于IP协议工作的,但是它并不是传输...原创 2019-06-30 22:30:08 · 395 阅读 · 0 评论 -
linux下统计某一目录所有文件夹下代码的行数
find . -name "*.c"|xargs cat|grep -v ^$|wc -l ^C打开终端,到需要统计的目录下,复制命令就可以查看原创 2019-07-11 15:47:49 · 2939 阅读 · 1 评论 -
vimrc的配置
"""""""""""""""""""""""""" vim-plug 插件管理器" PlugInstall 安装插件" PlugUpgrade 更新 vim-plug 自身call plug#begin('~/.vim/bundle')Plug 'Valloric/YouCompleteMe'Plug 'bling/vim-airline'Plug 'vim-airline/vim-...原创 2019-07-30 23:19:00 · 349 阅读 · 0 评论 -
Linux下多线程调试以及查看信息
1.线程的查看首先创建两个线程#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;void*...原创 2019-07-27 14:58:31 · 649 阅读 · 0 评论 -
linux执行系统命令卡死问题解决
最近在做一个小模块,里面有大量的系统调用,应该也就是这样才导致问题出现的吧当执行ps aux | grep python等命令会进入不可中断状态,其实包括执行ls都会感觉反应很慢下面这个是在网上找的说使用strace跟踪解决,因为我在代码里面执行的是ps aux,所以这里就用strace ps aux跟踪问题,结果是下面这样:open("/proc/17487/cmdline", O_RDO...原创 2019-08-24 15:37:46 · 10999 阅读 · 0 评论 -
IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?
(一)IO复用是Linux中的IO模型之一,IO复用就是进程告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程处理,从而不会在单个IO上阻塞了,Linux中,提供了select、poll、epoll三种接口来实现IO复用(二)select:缺点:单个进程能够监视的文件描述符的数量存在最大限制,通常是1024。由于select采用轮询的方式扫描文件描述符...原创 2019-05-25 21:44:53 · 1618 阅读 · 0 评论 -
linux—进度条彩色版简单实现
一、缓冲区理解:1.无缓冲:将所得到的信息马上显示出来。2.行缓冲:输入输出遇到换行才执行的I/O操作,比如键盘操作。3.全缓冲:输入输出写满缓冲区蔡执行I/O操作。比如磁盘读写。当我们在实现的时候需要使用fflush(stdout)来刷新缓冲区,以便下一次的输出。二、fflush的理解:1.对于输出流,fflush()强制写入给定输出或更新的所有用户空间缓冲数据。2.对于输入流,f...原创 2018-09-24 12:34:31 · 305 阅读 · 0 评论 -
linux-线程与进程的区别
进程:是计算机中的程序关于某些数据集合上的一次运行,是系统进程资源分配和调度的基本单位,是操作系统结构的基础,执行之前需要系统分配资源才能进程。而需要执行一些细小任务时,本身无需分配单独资源,比如所有的子进程共享父进程的资源,按照进程执行过程来讲,造成时间和空间浪费,所以就有了进程相同点:(1)都是实现多任务并发的技术手段(2)二者都可以独立调度,在多任务环境下,功能并无差异,(3)并且二...原创 2019-02-22 23:04:13 · 192 阅读 · 2 评论 -
linux进程间通信—匿名管道
匿名管道:(一)匿名管道特点:1.半双工,数据在同一时刻只能在一个方向行流动。2.数据只能从管道的一段写入,从另一端读出。3.写入管道的数据遵循先进先出的规则。4.管道所传送的数据是无格式的,这要求管道的读出方式和写入方式必须事先约定好数据的格式,如多少个字节算一个消息。5.管道不是普通的文件,不属于某个文件系统,只存在于内存中。6.管道爱内存中对应一个缓冲区,不同的系统大小不一定相...原创 2019-02-24 14:50:34 · 478 阅读 · 0 评论 -
linux进程间通信—共享内存
共享内存:(一)共享内存时进程间通信方式最简单之一,共享内存允许两个及两个以上的进程访问同一块内存。就如同malloc()函数向不同进程返回了指向同一个物理内存区域的指针,当一个进程改变这个指针所指向的内容时,其他进程也会察觉到这个改变。(二)共享内存的特点:1.共享内存时进程间共享数据的一种最快的方法。当一个进程向共享内存区域写入了数据,共享个内存区域的其他进程就可以立即查看其中的内容。...原创 2019-02-24 14:56:28 · 461 阅读 · 0 评论 -
linux进程间通信—消息队列
消息队列(一)消息队列提供了从一个进程向另一个进程发送数据块,每个数据块都有一个类型,接收进程可以独立的接收含有不用类型的数据结构,可以通过发送消息来避免命名管道的同步和阻塞问题,但是消息队列和命名管道一样,每个数据块都有最大长度。(二)特点:1.消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按照消息的类型读取。2.消息队列允许一个或者多个进程向其读取或者写入...原创 2019-02-24 17:02:25 · 221 阅读 · 0 评论 -
linux进程间通信—命名管道
命名管道(一)命名管道不同于匿名管道指出是它提供了一个路径名,以FIFO的文件形式存在于文件系统中,这样即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信,因此,通过FIFO不相关的进程也能交互数据。命名管道(FIFO)和匿名管道(pipe)有一些特点是相同的,不一样的地方在于:1.FIFO在文件系统中作为一个特殊的文件而存在,但是FIFO中的内...原创 2019-02-25 22:06:43 · 315 阅读 · 0 评论 -
linux进程间通信—信号量
(一)概念1.临界资源:同一时刻,只允许一个或有限个进程或者线程访问的资源。2.临界区:访问临界资源的代码段。3.原子操作:不可分割或者中断的操作,操作一旦开始执行,就必须执行结束,中途不能被任何原因打断。4.信号量类似于计数器,是一个特殊的变量,值可以改变,但只能取正整数值,并且对它的加1和减1操作是原子操作。如果信号量值为0,那么再进行减1操作时就会阻塞。信号量的初始值,代表资源数量。...原创 2019-02-26 16:24:25 · 288 阅读 · 0 评论 -
linux—进程的控制:结束进程、等待进程结束
一、结束进程:我们可以通过exit()或者_exit()函数来结束当前进程。(一)所需头文件:#include &amp;lt;stdlib.h&amp;gt;函数:void exit(int value);功能:结束调用此函数的进程参数:status:返回父进程的参数(低8为有效)返回值:无(二)所需头文件:#include &amp;lt;unistd.h&amp;g...原创 2019-03-07 01:22:30 · 877 阅读 · 1 评论 -
TCP编程
TCP是一种面向连接的、可靠的、基于字节流的传输协议。TCP具有以下特点: 每一次完整的数据传输都要经过建立连、使用连接、终止连接的过程 可靠、出错传输、且没收到一个数据都要给出相应的确认,保证数据传输的可靠性TCP的网络编程开发分为服务器端和客户端两部分,常见的步骤如下:注意:通常服务器在启动的时候都会绑定一个众所周知的地址(如ip地址+端口号),用于提供服务,客户就可以通过它来...原创 2019-03-17 22:10:16 · 251 阅读 · 0 评论 -
Docker之cgroup介绍
1 cgroup基本介绍1.1 cgroup基本概念cgroups(ControlGroups)是内核提供的一种机制,为了不同用户层面的资源管理,提供一个统一化的接口。从单个进程的资源控制到操作系统层面的虚拟化。1.2 cgroup术语表task(任务):cgroups的术语中,task就表示系统的一个进程。cgroup(控制组):cgroups中的资源控制都以cgroup为单位实现。c...原创 2019-08-29 09:47:56 · 3345 阅读 · 0 评论