![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 52
shangguan_1234
这个作者很懒,什么都没留下…
展开
-
【linux】stat的三个时间戳
在Linux下运行stat +文件名会出现三个时间戳access表示最后一次访问的时间下面在查看一下1.txtcat 1.txt我们可以看见access的时间变了2、modify表示最后一次修改的时间下面vim 1.txt,然后在stat 1.xt我们可以看见modify也变了3、change 表示文件的某一属性被修改,修改文件modify和原创 2016-12-25 23:03:50 · 771 阅读 · 0 评论 -
【Linux】gdb下调试多线程
一、gdb的简单使用方法,在编译方式后加上-g选项,即在debug运行,然后可以调试生成的可运行文件,例如“`这是Makefile里的内容,操作语句如上 二、gdb下的断点的添加及断点的删除,以及其他操作 加断点的方法大致有一下几类 1、b 行号 在某一行添加断点 2、b 函数名,在某一个函数名处加断点 3、删除断点,先用info b 查看断点编号,在原创 2017-03-04 15:00:41 · 963 阅读 · 1 评论 -
【计算机网络】I/O多路转接之poll
不同与select使用三个位图来表示三个fdset的方式,poll使用一个 pollfd的指针实现。 pollfd结构包含了要监视的event和发生的event,不再使用select“参数-值”传递的方式。同时,pollfd并没有最大数量限制(但是数量过大后性能也是会下降)。 和select函数一样poll返回后,需要轮询pollfd来获取就绪的描述符。 从上面看,select和poll都需原创 2017-03-18 16:55:27 · 577 阅读 · 0 评论 -
【Linux】设置定时任务
1、首先开启cron服务我的虚拟机在root是用service cron start开启的,不同版本可能会有所不同2、编写定时文件crontab -e进入编辑定时文件如我是让1分钟执行我的1.o文件然后输到timedata文件里命令*/1* * * */home/sgc/1.o >timedata可以用crontab -l 查看创建的定时程序一分钟后查原创 2017-02-27 15:14:16 · 256 阅读 · 0 评论 -
【计算机网络】dup/dup2
对输入文件描述符进行重定向 dup#include<stdio.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<fcntl.h>int main(){ int fd=open("./log",O_CREAT|O_RDWR,0644); if(fd<0) { perr原创 2017-03-15 20:06:36 · 859 阅读 · 0 评论 -
【计算机网络】I/O多路转接之epoll
什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关系统调用原创 2017-03-25 19:57:18 · 579 阅读 · 0 评论 -
【shell脚本】shell的符号
shell执行脚本1.方法一: chmod +x myshell.sh 2.方法二:/bin/bash myshell.sh 以第一种为例 本地变量本地变量的复制及查看 变量引用如果⼀个变量叫做VARNAME,用VARNAME可以表示它的值,在不引起歧义的情况下也可以用{VARNAME}可以表示它的值,在不引起歧义的情况下也可以 用VARNAME表示它的值。通过以下例子较这两种表示法的不原创 2017-03-25 20:55:59 · 654 阅读 · 0 评论 -
【计算机网络】I/O多路转接之select
系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应FILE *结构的表示就是stdin、stdout、stde原创 2017-03-16 12:04:25 · 847 阅读 · 0 评论 -
人脸识别部分内存调用优化
优化内容 :void realloc_if_need(){ size_t reserve_items=std::max(static_cast<int>(max_items/10),512); size_t allocate_items=0; bool need_realloc=false; if(getAllocatedSize()=原创 2017-08-23 15:03:21 · 780 阅读 · 0 评论 -
【linux】匿名管道pipe
管道是一种最基本的IPC机制,由pipe函数创建: #include int pipe(int filedes[2]); 调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输⼊1是标准输出一样)。所原创 2017-02-15 22:23:37 · 328 阅读 · 0 评论 -
【Linux】线程安全与可重入函数
线程安全与 线程安全函数与可重入函数线程安全函数 • 概念: 线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 • 确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则原创 2017-02-24 11:36:02 · 415 阅读 · 0 评论 -
【Linux】基于环形buf的多消费者多生产者问题
生产者消费者问题,是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。下面是该问题的环形模型当生产者在生产时,消费原创 2017-02-22 20:43:36 · 765 阅读 · 0 评论 -
【linux】vim插件的安装
1、taglist插件下载地址http://download.csdn.net/detail/shangguan_1234/9725538下载解压后,将插件脚本文件(.vim)和帮助文件(.txt)分别放入vim常用目录:~ /.vim下的plugin/taglist.vimdoc/taglist.txt中。可以将压缩包拖到你的HOME里解压然后把tag原创 2016-12-30 15:11:06 · 1238 阅读 · 0 评论 -
【linux】task_struct结构体
task_struct1. 调度数据成员(1) volatile long states;表示进程的当前状态:? TASK_RUNNING:正在运行或在就绪队列run-queue中准备运行的进程,实际参与进程调度。? TASK_INTERRUPTIBLE:处于等待队列中的进程,待资源有效时唤醒,也可由其它进程通过信号(signal)或定时中断唤醒后进入就绪队列run-q原创 2017-01-08 15:46:53 · 328 阅读 · 0 评论 -
【Linux】第一个简单shell
使用c/c++完成一个简单shell,具有基本功能#include#include#include#include#include#include#includevoid GetLoginName(){ struct passwd* pwd; pwd=getpwuid(getuid()); printf("[%s@",pwd->pw_name);}void GetHo原创 2017-02-16 14:23:09 · 284 阅读 · 0 评论 -
【Linux】命名管道FIFO
管道的一个不足之处是没有名字,因此,只能用于具有亲缘关系的进程间通信,在命名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的是,FIFO(firs原创 2017-02-16 14:32:26 · 337 阅读 · 0 评论 -
【Linux】消息队列
消息队列提供了一个进程向另一个进程发送数据块的方法。消息队列的结构原创 2017-02-16 22:01:30 · 231 阅读 · 0 评论 -
【Linux】信号量
信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。当进程不再使用一个信号原创 2017-02-17 17:06:29 · 275 阅读 · 0 评论 -
【Linux】用gcc生成静态库和动态库
inux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。 静态库在程序编译时会被连接到目标代码中,目标程序运行时将不再需要该动态库,移植方便,体积较大linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。 静态库在程序编译时会被连接到目标代码中,目标程序运行时将不再需要该动态库,移植方便,原创 2017-02-17 19:02:41 · 804 阅读 · 1 评论 -
【linux】共享内存
分配共享内存使用shmget函数来分配,首先来看shmget里的参数该函数的第一个参数是一个用来标识共享内存块的键值。彼此无关的进程可以通过指定同一个键以获取对同一个共享内存块的访问。不幸的是,其它程序也可能挑选了同样的特定值作为自己分配共享内存的键值,从而产生冲突。用特殊常量IPC_PRIVATE作为键值可以保证系统建立一个全新的共享内存块。该函数的第二个参数指定原创 2017-02-18 20:05:37 · 772 阅读 · 2 评论 -
对某门禁系统部分代码做线程控制
线程控制部分代码 c++11中的方法 m_Worker = std::make_shared<Linkface::SimpleWorker>([&](){ int len = m_Buffer.DataLen(); if(len <= 0) return; BYTE * buffer = new BYTE[len]; m_Buffer原创 2017-08-23 15:09:03 · 805 阅读 · 0 评论