月份: 2013-07

互斥锁为什么还要和条件变量配合使用

mutex体现的是一种竞争,我离开了,通知你进来。 cond体现的是一种协作,我准备好了,通知你开始吧。 互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起配合使用…

阅读详细 »

暑期讲座遗漏知识点整理一

一、有符号数与无符号数的强制类型转换问题 上次遇到一个问题,在比较两sizeof返回值的时候出现了意想不到的错误,原因在于sizeof返回的是无符号类型,所以出现错误。 有符号数和无符号数的区别在于第一位表示正负数,还是数值。换句话说,有符号的二进制数最高位是…

阅读详细 »

再议C语言(编译与链接)讲座整理

编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->…

阅读详细 »

再议C语言第二节(数组与指针)讲座整理

首先先区分一下两个容易混淆的定义: 数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动); 指针数组是数组元素为指针的数组,其本质为数组。例如:*p[2]是指针数组,实质是一个数组,里面…

阅读详细 »

再议C语言第一节(C类型与运算)讲座整理

一、数据类型 1、float和double 首先先分享一下浮点数的相关知识。 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方…

阅读详细 »

linux C 守护进程及其创建

涉及的概念: 守护进程:在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。守护进程是脱离于终端并且在后台运行的进程。…

阅读详细 »

linux C编程常见断错误总结

定义   所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级…

阅读详细 »

linux C中关于进程控制随笔

    进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。  &n…

阅读详细 »

fstat、stat和lstat 区别

在介绍三者的区别之前,首先介绍的是一个非常重要的结构体类型,名字叫做struct stat,这是一个保存文件状态信息的结构体,其类型如下: struct stat {     dev_t     st_dev;     /* 文件所在设备的标识&…

阅读详细 »

C语言中关于INT_MIN宏的一些问题

在进行数据表达和运算的时候,二进制补码表示法是非常直观和快捷的,但是在数的上下界时往往会出现问题,这需要我们特别注意。例如在C语言的头文件<limits.h>里面看到    #define INT_MAX        2147483647    #defi…

阅读详细 »