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