`
weiyinchao88
  • 浏览: 1234679 次
文章分类
社区版块
存档分类
最新评论
文章列表
彩色的命令行 ...
重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。了解一下它是如何节省您的时间和精力的。 <!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams w ...
T. W. Burger (twburger@bigfoot.com), 老板, Thomas Wolfgang Burger Consulting 公司 2000 年 9 月 01 日 您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情况下,更简单的链 ...
Linux 内核剖析 历史和体系结构分析 <!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- this content will be automatically generated across all content areas --> ...
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-aut ...
Unix编程FAQ v0.10 无意中找到一个Unix编程FAQ,更好运的是这已经被翻译成中文版了!虽然比较旧了,但还是很有用。由linuxforum.net提供。感谢他们所做的贡献。 下面贴出章节目录。原文还是在linuxforum.net上,这样应该不算是盗链吧! Table of Contents 关于 原英文版 原始中文版 本中文HTML文档 1. 进程控制 1.1. 创建新进程:fork函数 1.1.1. fork函数干什么? 1.1.2. fork函数与vfork函数的区别在哪里? 1.1.3. 为何在一个fork的子进程分支中使 ...
The asmlinkage tag is one other thing that we should observe aboutthis simple function. This is a #define for some gcc magic that tellsthe compiler that the function should not expect to find any of itsarguments in registers (a common optimization), but only on theCPU’s stack. Recall ou ...
在内核中常会见到下面这样的代码。 bvl = bvec_alloc(gfp_mask, nr_iovecs, &idx); if (unlikely(!bvl)) { mempool_free(bio, bio_pool); bio = NULL; goto out; } 这个likely()和unlikely()其实是宏定义。原始定义在 include/linux/compiler.h中,如下: #define likely(x) __builtin_expect(!!(x), 1) #define un ...
为啥内核里有这么多 do{ }while(0) 的宏啊?一开始我也好不明白。感觉不出用了会有什么效果。不过明白之后就知道它的好处了。好处就在于多语句的宏。 #define FOO(x) print(”arg is %sn”,x);do_something(x); 在代码中使用: if(2==blah) FOO(blah); 预编译展开后: if(2==blah) print(”arg is %sn”,blah); do_something(blah); 看到了吧,do_something函数已经脱离了if语句的控制了。这可不是我们想要的。使用do{}while( ...
#define __init __attribute__ ((__section__ (".init.text"))) #define __initdata __attribute__ ((__section__ (".init.data"))) #define __exitdata __attribute__ ((__section__(".exit.data"))) #define __exit_call __attribute_used__ __attribute__ ( ...
1 基本解释  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。  另外,extern也可用来进行链接指定。   2 问题:extern 变量  在一个源文件里定义了一个数组: char a[6];   在另外一个文件里用下列语句进行了声明: ...
1. 引言 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。 但是如果通过查阅make的帮助文档来手工编写Makefile,对任何程序员都是一场挑战。幸而有GNU提供的Autoconf及Automake这两套工具使得编写Makefile不再是一个难题。 本文将介绍如何利用 G ...
lsof 快速起步 <!--End of Table of Contents--> 查看对某个文件的使用情况 查看哪些进程对某个文件进行了调用: $ lsof /etc/passwd 查看对文件系统的使用 /tmp目录被垃圾文件塞满了, 但是, 用ls 又看不到太大文件, 谁干的? $ lsof /tmp 查找打开,但是不能连接的文件 一个进程打开一个文件, 然后将其设为 unlinked 状态, 则此文件资源仍能被进程使用, 但是其访问路径已经被删除了. 因此, 使用ls不能将其列出. 只有当进程结束时, 才能释放文件占用的 ...
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd ...
提示:改編自tinyproxy,向原作者致敬! 在程序的開頭,可以定義以下几個常量: #defineMAXSERVICES 128 /*每一個進程最大服務用戶數,防止錯誤積累*/#defineSTARTSERVERS 32 /*初始啟動服務進程數*/#defineMAXSPARESERVERS 32 /*最大空閒服務進程數 ...
Global site tag (gtag.js) - Google Analytics