上一页 1 ··· 8 9 10 11 12 13 下一页
摘要: 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制(1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。(2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此 阅读全文
posted @ 2011-09-25 15:47 only_eVonne 阅读(55065) 评论(0) 推荐(2) 编辑
摘要: int main(int argc, char *argv[]){ short a = 0xffff; printf("a = 0x%x\n", a); if(a == 0xffff) { printf("Just Test\n"); } return 0;}最后输出的结果是 a = 0xffffffff原因如下:1.%x 表示要输出无符号整数(unsigned int)的十六进制形式2.当有符号类型向更大长度类型转换时,如果首位为1,则前面全部补全为1,如首位为0,则前面全部补全为0预期的打印Just Test不会被打出来,因为:在比较时a被强制转换成 阅读全文
posted @ 2011-09-25 11:07 only_eVonne 阅读(408) 评论(0) 推荐(1) 编辑
摘要: system的原型定义大体如下: #include <stdio.h> #include <stddef.h> #include <signal.h> #include <unistd.h> #include <sys/wait.h> #include <sys/syscall.h> #if ! defined __NR_vfork #define vfork fork #endif int system(char *cmdstr) { int wait_state = -1; int pid = -1; __sighan 阅读全文
posted @ 2011-09-24 16:35 only_eVonne 阅读(2218) 评论(0) 推荐(0) 编辑
摘要: Linux的线程实现是在核外进行的,核内提供的是创建进程的接口do_fork()。内核提供了两个系统调用__clone()和fork(),最终都用不同的参数调用do_fork()核内API。 do_fork() 提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、CLONE_SIGHAND(共享信号句柄表)和CLONE_PID(共享进程ID,仅对核内进程,即0号进程有效)。当使用fork系统调用产生多进程时,内核调用do_fork()不使用任何共享属性,进程拥有独立的运行环境。当使用pthread_create 阅读全文
posted @ 2011-09-24 16:33 only_eVonne 阅读(1943) 评论(0) 推荐(0) 编辑
摘要: 关于linux线程在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么,只是维护应用程序所需的各种资源。而线程则是真正的执行实体,为了让进程完成一定的工作,进程必须至少包含一个线程。进程所维护的是程序所包含的资源(静态资源),如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler等。线程所维护的是运行相关的资源(动态资源),如:运行栈,调度相关的控制信息,待处理的信号集等。然而,一直以来,linux内核并没有线程的概念。每一个执行实体都是一个task_struct结构,通常称之为进程。linux进程是一个执行单元,维护着执行相关的动态资源,同时,它又引用着 阅读全文
posted @ 2011-09-24 16:30 only_eVonne 阅读(3211) 评论(0) 推荐(0) 编辑
摘要: 执行文件是如何在shell中被"执行"的。本文中尽可能少用一些源码,免得太过于无聊,主要讲清这个过程,感兴趣的同学可以去查看相应的源码了解更多的信息。1.父进程的行为:复制,等待执行应用程序的方式有很多,从shell中执行是一种常见的情况。交互式shell是一个进程(所有的进程都由pid号为1的init进程fork得到,关于这个话题涉及到Linux启动和初始化,以及idle进程等,有空再说),当在用户在shell中敲入./test执行程序时,shell先fork()出一个子进程(这也是很多文章中说的子shell),并且wait()这个子进程结束,所以当test执行结束后,又 阅读全文
posted @ 2011-09-24 15:34 only_eVonne 阅读(8065) 评论(0) 推荐(1) 编辑
摘要: MPEG-2简介 MPEG-2制定于1994年,设计目标是高级工业标准的图象质量以及更高的传输率。MPEG-2所能提供的传输率在3-10Mbits/sec间,其在NTSC制式下的分辨率可达720X486,MPEG-2也可提供并能够提供广播级的视像和CD级的音质。MPEG-2的音频编码可提供左右中及两个环绕声道,以及一个加重低音声道,和多达7个伴音声道(DVD可有8种语言配音的原因)。由于MPEG-2在设计时的巧妙处理,使得大多数MPEG-2解码器也可播放MPEG-1格式的数据,如VCD。 同时,由于MPEG-2的出色性能表现,已能适用于HDTV,使得原打算为HDTV设计的MPEG-3,还... 阅读全文
posted @ 2011-09-17 11:22 only_eVonne 阅读(31709) 评论(0) 推荐(1) 编辑
摘要: 作为一个IT人员,如果不能利用搜索引擎很快地查找到自己想要的技术资料的话,那么会很悲剧!特别是面对新技术的时候,由于资料特别少,就算有,大部分也是英文资料。如果这时候,你查找资料的能力比不上别人的话,很有可能就会在新一轮的技术竞赛中被甩在后面,比如现在很火的ios游戏开发。android由于搞的人多,资料也相对来说多一些,门槛也低一些,不需要mac,只要有一台pc就可以弄。但是,接下来的wphone7呢?你准备好了吗? 我来博客园也有将近半年时间了,在入园的时候,我写了一篇《如何学习iphone游戏开发》的文章。其实,在写作那篇文章的时候,我自己也才刚开始接触iphone游戏开发不久,也... 阅读全文
posted @ 2011-09-17 10:42 only_eVonne 阅读(718) 评论(0) 推荐(0) 编辑
摘要: Linux 是一套免费使用和自由传播的类 Unix 操作系统。我们通常所说的 Linux ,指的是 GNU/Linux ,即采用 Linux 内核的 GNU 操作系统。由于 Linux 是一个内核,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等。然而一个完整的操作系统不仅仅是内核而已, Linux Kernel( 内核 ) 并不负责提供用户强大的应用程序,它没有编译器、系统管理工具、网络工具、 Office 套件、多媒体、绘图软件等,这样的系统也就无法发挥其强大功能,用户也无法利用这个系统工作。因此有人便提出以 Linux Kernel 为核心再集成搭配各式各样的系统程序或应用工 阅读全文
posted @ 2011-09-03 12:20 only_eVonne 阅读(906) 评论(0) 推荐(0) 编辑
摘要: 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024 表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1. int epo 阅读全文
posted @ 2011-08-28 15:07 only_eVonne 阅读(884) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 下一页