Linux
songxueyu
这个作者很懒,什么都没留下…
展开
-
Linux-证明子进程从父进程处拷贝了文件描述符
今天做了个小实验,证明子进程从父进程那拷贝了文件描述符,很简单,不要笑啊~ #include #include #include #include #include #include #include int main(void) { pid_t pid; int fd1,temp; char buf[20]; fd1=open("a.txt",O_RDWR|O_APPEND,060原创 2013-05-28 10:56:52 · 1078 阅读 · 0 评论 -
理解fork()的一次调用两次执行
fork()函数是linux里多进程编程的基础,为linux成为强大的多用户操作系统提供了强有力的支持。 但是对于很多初学者而言,虽然知道怎么写多进程的程序,知道怎么fork()出一个子进程,却很少有人能够理解fork()的最有特点的一个性质:一次调用,两次执行。 进程在内存里有三部分的数据——代码段、堆栈段和数据段。这三个部分是构成一个完整的执行序列的必要的部分。 代码段——存放了程序代码原创 2013-06-17 21:41:44 · 2069 阅读 · 0 评论 -
Linux curses库
相信您在网路上一定用过如 tin,elm 等工具, 这些软体有项共同的特色, 即他们能利用上下左右等方向键来控制游标的位置. 除此之外, 这些程式的画面也较为美观. 对Programming 有兴趣的朋友一定对此感到好奇, 也许他能在 PC上用Turbo C轻易地写出类似的程式, 然而, 但当他将相同的程式一字不变地移到工作站上来编译时, 却出现一堆抓也抓不完的错误. 其实, 原因很简单, 他使用转载 2013-09-30 10:06:57 · 759 阅读 · 0 评论 -
#define LIST_HEAD_INIT(name) { &(name), &(name) } what?!!
刚开始看点源码,完全被惊呆了。。。这才叫高手写的代码啊!有朝一日咱也要到达那样的高度 #define LIST_HEAD_INIT(name) {&(name),&(name)} 是什么意思?光看这个宏一辈子也看不明白,源文件是这么定义使用的 #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_原创 2013-09-20 23:02:50 · 5746 阅读 · 0 评论 -
我也来说说container_of(或者list_entry)
还是从头说起吧,也给自己记一下。 你是怎么定义链表的?如果昨天你问我这个问题,我大概会写出以下的代码: struct dog{ unsigned char name[10]; struct dog*prev; struct dog *next; } 但是内核可不能这么做,(以前确实是这么做的,从2.1开始就使用了官方的实现方法)因为这样的链表只适用于这一个结构体,你以后要想实现一个str原创 2013-09-21 13:54:58 · 973 阅读 · 0 评论 -
打开汇编之门
原文作者:Tony BaiTony Bai 原文地址:http://bigwhite.blogbus.com/logs/1587340.html 工作这么长时间,一直在C语言这一层面上钻研和打拼,日积月累,很多关于C的疑惑在书本和资料中都难以找到答案。程序员是追求完美的一个种群,其头脑中哪怕是存在一点点的思维黑洞都会让其坐卧不宁。不久前在itput论坛上偶得《Computer System转载 2013-09-26 10:14:01 · 757 阅读 · 0 评论 -
Linux内核2.6和2.4中内核堆栈的比较
原文:http://www.blogbus.com/feizf-logs/16835565.html 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/feizf-logs/16835565.html Linux内核 2.4和2.6的进程内核堆栈和task描述符存储不太一样,这儿总结一下。 在内核2.4中堆栈转载 2013-12-07 17:30:06 · 869 阅读 · 0 评论