2012年2月16日

linux程序段错误的调试方法

摘要: linux程序段错误的调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一 般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指 向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的 表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程... 阅读全文

posted @ 2012-02-16 20:02 Richard.FreeBSD 阅读(374) 评论(0) 推荐(0) 编辑

Linux常见文件结构体全面解释

摘要: Linux常见文件结构体全面解释 1.1 struct file struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码 中,struct file的指针通常被命名为file或filp。如下所示: struct file { union { struct list_head fu_list; 文件对象链表指针linux/includ... 阅读全文

posted @ 2012-02-16 18:54 Richard.FreeBSD 阅读(434) 评论(0) 推荐(0) 编辑

美国 USA

摘要: 美少年14岁造出核反应堆 国土安全部愿为其拨款泰勒·威尔逊泰勒和他的导师之一比尔在内华达州大学的地下实验室里,前面是泰勒14岁时建立的核聚变反应堆。 看动漫?玩游戏?早恋?14岁时你在做什么? 这个美国少年已造出核反应堆! 美国17岁少年泰勒·威尔逊看上去和普通高中生没有什么两样,他的最大梦想就是要成为一个明星,而这个梦想在他14岁的时候便已实现。泰勒目前是全球最年轻的核科学家,他在14岁时就完成了核聚变,而且总是不断地将惊奇带给身边的人,有关他的超凡故事还在继续。 小小神童令人头痛 数年前,9岁的泰勒牵着父亲肯尼斯的手,在穿过阿拉巴马州亨茨维尔市的美国太空及火箭中心的大门 阅读全文

posted @ 2012-02-16 13:40 Richard.FreeBSD 阅读(456) 评论(0) 推荐(0) 编辑

va_start、va_end、va_list的使用

摘要: va_start、va_end、va_list的使用1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include <iostream>void fun(int a, ...){int *temp = &a;temp++;for (int i = 0; i < a; ++i){cout << *temp << endl;temp++;}}int main(){int a 阅读全文

posted @ 2012-02-16 11:05 Richard.FreeBSD 阅读(127) 评论(0) 推荐(0) 编辑

Daemon程序中的pidfile

摘要: Daemon程序中的pidfile 2010-08-14 8:37 pm 作者:Dram pidfile一般用于daemon程序,主要作用是保证在系统中只存在该daemon的一个进程,同时也便于系统统一管理这些daemon程序。那么程序在实现pidfile功能时具体需要做哪些处理呢?可以从这个纯Python实现中入手。一般的daemon程序,不管最终接口是直接用C实现还是用SHELL包装,都需要提供start,stop及restart功能。start过程需要处理的问题:1.1 确保系统中没有该daemon的进程。如果有,则不能启动程序。 1.2 在daemon化之后,创建pidfile,写入p 阅读全文

posted @ 2012-02-16 10:43 Richard.FreeBSD 阅读(3128) 评论(0) 推荐(0) 编辑

FreeBSD系统编程【转】

摘要: FreeBSD系统编程 目录 第一章:FreeBSD的Make 第二章:BSD自举 第三章:进程和内核服务 第四章:高级进程控制和信号 第五章:基本I/O 第六章:高级I/O 第七章:进程资源和系统限制 第八章:FreeBSD5.x [align=center]第一章FreeBSD的make[/align] [align=center]译者:雨丝风片@chinaunix.net[/align] 1.1FreeBSD的make 作为常用的和基本的Unix软件开发工具,make是一个可以跟踪全部的文件依赖关系的非常好的簿记工具程序。要管理依赖关系这样的项目细节常常 需要花费很多的时间,甚至会... 阅读全文

posted @ 2012-02-16 10:11 Richard.FreeBSD 阅读(715) 评论(0) 推荐(0) 编辑

文件 上锁 flock fcntl

摘要: 文件上锁当多个进程试图写同一个文件,将发生什么?它们相互冲突,已知的事情像文件上锁。结果就是每个文件描都有自己的描述符跟偏移量,当每个进程写自己的文件时,偏移量预先独立导致没有进程知道其他的进程也正在执行写操作。最后的文件将因为多个独立写文件的操作使混合后的文件变得相当于垃圾,直接给文件上锁是解决这个问题的一种方式。在任意时刻只能让一个进程能够写到文件,另一种办法是允许在一个叫做高级文件锁的scheme里的文件内部进行区域锁定。fcntl函数能够提供这个功能,通常来说,锁有两种,一种是写,另一种是读,不同之处在于读锁不会干扰其它进程读取文件,但是特定的区域只能一个写锁存在。当使用顾问锁的时候, 阅读全文

posted @ 2012-02-16 10:07 Richard.FreeBSD 阅读(767) 评论(0) 推荐(0) 编辑

导航