随笔分类 -  linux

摘要:内核空间与用户空间通信机制: 1. ioctl 2. netlink 3. 系统调用 4. 内存映射 5. proc方式 netlink相对于其他的通信机制具有以下优点: 1. 使用netlink通过自定义一种新的协议并加入协议族即可通过socket API使用netlink协议完成数据交换,而io 阅读全文
posted @ 2020-11-19 00:14 小 楼 一 夜 听 春 雨 阅读(1488) 评论(0) 推荐(0) 编辑
摘要:注意的地方:如果用CPU_SET这个宏来设置那么可以直接用0,1,2作为cpu的id。 如果直接对mask赋值,需要注意是按照bit来的: 阅读全文
posted @ 2019-09-10 10:41 小 楼 一 夜 听 春 雨 阅读(2375) 评论(0) 推荐(0) 编辑
摘要:from https://www.cnblogs.com/qingergege/p/5914218.html 最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。 好了,虽然啰嗦了点,但确实是忠告。步入正题: 我们的主角 getopt()函数。 英雄不问出处,getopt()函 阅读全文
posted @ 2019-09-06 14:30 小 楼 一 夜 听 春 雨 阅读(485) 评论(0) 推荐(0) 编辑
摘要:在进行堵塞式系统调用时。为避免进程陷入无限期的等待,能够为这些堵塞式系统调用设置定时器。Linux提供了alarm系统调用和SIGALRM信号实现这个功能。 要使用定时器。首先要安装SIGALRM信号。假设不安装SIGALRM信号,则进程收到SIGALRM信号后。缺省的动作就是终止当前进程。 SIG 阅读全文
posted @ 2018-02-14 01:12 小 楼 一 夜 听 春 雨 阅读(1548) 评论(0) 推荐(1) 编辑
摘要:PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。 所谓的PHONY这个单词就是伪造的意思,makefile中将.PHONY放在一个目标前就是指明这个目标是伪文件目标,如下:.PHONY:clean这里clean目标没 阅读全文
posted @ 2018-01-17 16:27 小 楼 一 夜 听 春 雨 阅读(1953) 评论(0) 推荐(0) 编辑
摘要:1. sigprocmask函数提供屏蔽和解除屏蔽信号的功能。 从而实现关键代码的运行不被打断。 函数声明如下: int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);其中参数 how可设置的参数为:SIG_BLOCK, SI 阅读全文
posted @ 2018-01-16 14:52 小 楼 一 夜 听 春 雨 阅读(3426) 评论(0) 推荐(0) 编辑
摘要:C++父子进程使用SIGUSR1和SIGUSR2进行通信 捕捉SIGUSR1和SIGUSR2的简单程序 阅读全文
posted @ 2018-01-16 14:11 小 楼 一 夜 听 春 雨 阅读(68515) 评论(0) 推荐(6) 编辑
摘要:上周做性能调优的时候,发现一个测并发读写的场景数据很奇怪。 场景是测一个写线程加不同数量的读线程时的读写QPS,结果发现数据大致是下面的样子: 代码大致是这样子的: // 写线程 ReadWriteLockGuard lock(mLock, 'w'); // do something... // 读 阅读全文
posted @ 2017-12-04 17:05 小 楼 一 夜 听 春 雨 阅读(289) 评论(0) 推荐(0) 编辑
摘要:我们经常会遇到为阻塞操作设置超时的问题,比如说阻塞套接字read读取设置10秒超时,其中一个办法就是调用alarm函数,它在指定超时时期产生SIGALRM信号,使得阻塞操作中断。 但其弊端在于: 1、可能干扰进程中现有的alarm调用,如timer、settimer、sleep等。 2、在多线程化程 阅读全文
posted @ 2017-10-23 00:51 小 楼 一 夜 听 春 雨 阅读(1434) 评论(0) 推荐(0) 编辑
摘要:如:man 2 read, 就可以查看read函数的文档 阅读全文
posted @ 2017-08-16 20:09 小 楼 一 夜 听 春 雨 阅读(222) 评论(0) 推荐(0) 编辑
摘要:3. 常用STL的使用 3.1. string (1)string类的实现(使用strlen、strcpy、strcat、strcmp等,注意判NULL)。 (2)C++字符串和C字符串的转换:data()以字符形式返回字符串内容,但不添加’\0\;c_str()返回一个以’\0’结尾的字符数组;c 阅读全文
posted @ 2017-08-09 17:09 小 楼 一 夜 听 春 雨 阅读(1482) 评论(0) 推荐(0) 编辑
摘要:stat, fstat and lstat是用来检查文件属性的。他们将文件属性信息通过a struct stat object 返回。 int stat (const char *filename, struct stat *buf) [Function]The stat function retu 阅读全文
posted @ 2017-08-09 14:20 小 楼 一 夜 听 春 雨 阅读(2330) 评论(0) 推荐(0) 编辑
摘要:from http://kb.cnblogs.com/page/574767/ 前言 由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语 阅读全文
posted @ 2017-08-07 23:54 小 楼 一 夜 听 春 雨 阅读(6189) 评论(0) 推荐(0) 编辑
摘要:reference: http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html http://www.cnblogs.com/yuuyuu/p/5103744.html 阅读全文
posted @ 2017-07-20 14:46 小 楼 一 夜 听 春 雨 阅读(504) 评论(0) 推荐(0) 编辑
摘要:fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一。& 最经常被用到这个用在一个命令的最后,可以把这个命令放到后台执行二。ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停三。jobs查看当前有多少在后台运行的命令 阅读全文
posted @ 2017-07-20 14:18 小 楼 一 夜 听 春 雨 阅读(73750) 评论(1) 推荐(4) 编辑
摘要:在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy过程和fork不一样。 copy后的进程和原先的进程共享了所有的变量,运行环境。这样,原先进程中的变量变动在copy后的进 阅读全文
posted @ 2017-07-03 16:03 小 楼 一 夜 听 春 雨 阅读(17740) 评论(0) 推荐(1) 编辑
摘要:linux支持的哪些操作是具有原子特性的?知道这些东西是理解和设计无锁化编程算法的基础。 下面的东西整理自网络。先感谢大家的分享! __sync_fetch_and_add系列的命令,发现这个系列命令讲的最好的一篇文章,英文好的同学可以直接去看原文。Multithreaded simple data 阅读全文
posted @ 2017-07-03 15:17 小 楼 一 夜 听 春 雨 阅读(8179) 评论(0) 推荐(0) 编辑
摘要:在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用 阅读全文
posted @ 2017-06-30 18:08 小 楼 一 夜 听 春 雨 阅读(30941) 评论(2) 推荐(0) 编辑
摘要:对应C++11中的unique_ptr scoped_ptr的所有权更加严格,不允许转让,对其赋值和拷贝都是不合法行为,因而显得更轻巧和快捷。 scoped_ptr重载了operator*()和operator->()解引用操作符*和箭头操作符->,因此可以把scoped_ptr对象如同指针一样使用 阅读全文
posted @ 2017-06-27 17:49 小 楼 一 夜 听 春 雨 阅读(1323) 评论(0) 推荐(0) 编辑
摘要:foo.h main.cpp 输出: 阅读全文
posted @ 2017-06-22 14:30 小 楼 一 夜 听 春 雨 阅读(296) 评论(0) 推荐(0) 编辑