Linux
文章平均质量分 59
anribras
这个作者很懒,什么都没留下…
展开
-
linux tmux 解决复制到系统剪切板
tmux 复制到系统剪切板的方法tmux是很方便,但没想到复制到系统剪切板这么难用tmux v2.1.参考这篇文章 .1 安装xclip sudo apt-get install xclip2 增加tmux 配置重新映射了copy mode下的选择/中止选择文本.和vi一致,v开始 y结束 增加如下配置到.tmux.conf: bind-key -t vi-copy ‘v’ begin-原创 2017-01-01 12:45:09 · 6470 阅读 · 0 评论 -
基于setitimer实现允许单进程多次调用的定时器
原理setitimer不能在进程中多次调用,考虑用链表管理调用。每个节点包含当前事件还剩余多少时间,回调等,每次有新节点时,重新更新节点时间。在计数到来后,重新恢复节点初始时间实现重复计时,删除相对简单,挪掉节点即可。函数原型int set_timer(struct own_timer **t, struct timeval val, callback* cb, void* arg) ;int f原创 2017-04-21 07:41:43 · 1720 阅读 · 1 评论 -
简易线程池实现
其实也就是任务分发器,池子里预先跑着N个线程,可以往池子里提交任务。相对线程不断创建和销毁,特别对于大量的短时任务,线程池显然是很节省资源的。直接上代码:#include #include #include #include #include #include typedef void* (*job)(void*);#define THREAD_PROC(i) (threa原创 2017-03-22 14:33:42 · 460 阅读 · 0 评论 -
c++小根堆数组实现
主要功能最小堆排序(大到小): void order(); 删除首元素: Type fetch_root(); 插入元素: void insert_item(const Type & item); void insert_item_faster(const Type & item);//快速版本关键向下调整比较关键,即从start结点到end结点逐个调整最小堆: void shift原创 2017-07-05 10:59:09 · 730 阅读 · 0 评论 -
rabbit-mqtt +pmqtt协议+ paho库尝鲜 (ubuntu 16.04)
步骤1 下载安装rabiit-mq mqtt-server 就用deb包 另需要 sudo apt-get install erlang2 启动 sudo /etc/init.d/rabbitmq-server restart3 mqtt-3.1协议支持 rabbitmq-plugins enable rabbitmq_mqtt 4 开启动web管理 rabbitmq-plugins e原创 2017-08-04 16:08:37 · 1706 阅读 · 0 评论 -
linux x86_64函数栈帧
ubuntu-x86_64int func(int a, int b, int c, int d, int e ,int f, int g){ int h=10; int i; return a+b;}int main(int argc, char* argv[]){ func(1,2,3,4); return 3;}0000000000...原创 2019-02-02 12:56:29 · 591 阅读 · 0 评论 -
linux-elf装载过程
装载装载到哪里?内存,进程上看,是映射到了虚拟进程空间.装载谁? 程序运行的实体代码,数据,来自elf,共享库,OS等.怎么装载?利用程序局部性原理: 运行某段程序时,很可能也要运行最近的1个代码块,于是先提前装载到内存.内存肯定不够用,不过通过页映射,需要时(缺页异常),再从磁盘load到内存,做替换.管理这个装载过程的,就是os的存储管理器(MMU).具体过程:1. 建立虚拟进程...原创 2019-02-02 12:57:19 · 1618 阅读 · 0 评论 -
linux静态链接
基本概念预编译—>编译—>汇编—>链接宏定义代替,预编译命令,文本去注释—>.S—>.O—>ELF文本变成中间文件, 也就是编译+汇编的过程:词法分析,语法分析,语义分析,中间过程优化ELF文件ELF是一种二进制可执行文件.目标文件(*.obj)和最终可执行文件(ELF格式)统称为ELF文件.另外*.a *.so coredump文件也都是EL...原创 2019-02-02 12:57:49 · 995 阅读 · 0 评论