UNIX/LINUX
文章平均质量分 80
seton040
寻找巨人 然后踩上他的肩膀
展开
-
UNIX文件权限探讨
关于unix系统中涉及权限的问题探讨,跟大家分享下首先要明白一个关键点----权限分为两种:第一种是用ls -l命令显示出来的文件性质的权限,比如 -rw-r--r-- foo foo file,这里的读写权限是该文件本身的性质,表示该文件本身属于foo用户,属于foo组。第二种是进程性质的权限,比如 -rwsr--r-- bar b原创 2009-08-27 16:10:00 · 953 阅读 · 1 评论 -
UNIX缓冲机制
某日一朋友写了一个HELLO WORLD代码,出不来结果,代码如下:#include int main(int argc, char **argv){ printf("hello world!"); _Exit(0); } 注意到,在代码中printf语句打印的字符串最后没有带换行符,而且最后调用了_Exit函数,这导致了在终端屏幕上显原创 2009-08-31 20:21:00 · 1522 阅读 · 2 评论 -
IO编程 之 缓冲篇
涉及linux中IO编程的时候,我们总是不可避免地要跟各种各样的缓冲机制打交道,学好linux IO编程不是简单地掌握几个函数的用法就万事大吉,正确地运用IO需要对其缓冲机制全面的理解,切不可依葫芦画瓢,蒙混过关。 切入正题之前,我们先看一个简单的程序: #include #include #include #define BUFSIZE 5*1024intmain(vo原创 2009-09-27 01:52:00 · 847 阅读 · 1 评论 -
字符界面编程利器——vim + ctag + Taglist
习惯了在windows下用sourceInsight编程的人,当然也希望在linux的字符终端下也能有一样酷的软件,这里要介绍给大家的是如题所示的三款软件:vim , ctag 和Taglist 。 很多时候我们需要在多个源程序之间实现函数、宏定义、外部变量等的跳转查询,甚至有时候需要到内核或库源代码里窥视他们真面目,我们也需要有列出程序内部所使用的各个函数、变量、原创 2009-10-23 15:08:00 · 6567 阅读 · 6 评论 -
目标文件里装了什么东西
了解程序中各种变量在编译和运行阶段的状态和属性,对我们开发程序而言是非常有益的,通过对以下几个例子的探讨,搞清楚目标文件中都包含了哪些信息,能让我们明白C语言中各种存储类对程序的影响,也让我们在编写一个程序的时候胸有成竹。就像那个谁说的,真正的程序员,必须对自己程序的每一个字节了如指掌。 我们看看如下这个程序代码: /* simple_section.c */ int原创 2009-11-20 19:57:00 · 703 阅读 · 0 评论 -
玩转VFS
LINUX之所以那么成功,VFS(虚拟文件系统)功不可没,是它让LINUX支持多种多样的文件系统,让我们程序员的生活变得美满幸福,我们可以潇洒地在迥异的文件系统之间进行数据通信而毫不费力,VFS是怎么做到的?看下文分晓。 我们知道,有些文件系统原创 2010-02-02 17:57:00 · 154 阅读 · 0 评论 -
变参函数实现细节
C语言的函数虽然不具备C++的多态性,但也可以接受参数不确定的情况,当然,C语言中的变参函数实际在功能上是受限的,废话不多讲,下面来看看变参函数的边边角角的问题。 讨论之前我们来看一下最熟悉的变参函数printf的原型声明:int printf(const char *format, ...);注意到,在函数中声明其参数是可变的方法是三个点“...”,但同时,这个原创 2010-01-06 15:30:00 · 925 阅读 · 2 评论 -
双向循环链表在 LINUX kernel 中的实现
如果我们把内核中的用链表表示的数据结构画出来,那将是一盘又复杂又美味的。。。。意大利面。。。就像在之前分析的VFS那样。 内核中的链表经典实现,改造一下,体会一下,玩味一下。 内核的经典双向循环链表结构跟普通教材上教的双向循环链表的实现不大一样,平常我们会把数据存储在节点中,再把节点连接起来形成链表,但是内核中的双向循环链表是用一个独立的结构体来表示的,如下: struct list_head { struct list_head *prev; struct list_原创 2010-10-15 18:01:00 · 678 阅读 · 2 评论 -
哈希表在进程管理中的应用
LINUX-2.6内核还支持另一种双向链表,其与 list_head 有明显的不同,因为它不是循环的,这就是现在要讨论的内核中的哈希表,也叫散列表。 对于散列表而言,重要的不是在固定的时间内找到表中的最末一个元素,而是空间。表头存放在 hlist_head 中,这个结构具体实现如下: struct hlist_head { struct hlist_node *first; }; 可以看得出来,不像双向链表的实现,哈希表的表头结点只有一个成员,指向下一个结点(如果没有就为NULL原创 2010-10-25 12:00:00 · 1079 阅读 · 1 评论