第一章 第六节

第一小节

这一章没有程序设计和API方面的深入学习,而是注重介绍了unix操作系统中的原始数据类型和系统原型函数,错误处理方面的知识。

unistd.h 该文件包含了unix操作系统中的各种原始数据类型和原型函数, 我的系统是osx 10.0.5, 该文件通常位于操作系统的 /usr/include 目录下,打开该文件,我们会发现很多预定义信息。

ssize_t	 read(int, void *, size_t) __DARWIN_ALIAS_C(read);
pid_t getpid(void);
ssize_t write(int, const void *, size_t) __DARWIN_ALIAS_C(write);

如上之类的系统原型函数都在该文件中定义,并且为了避免使用依赖于特定计算机的专门数据类型, ssize_t, pid_t, 之类的数据类型,都定义在 sys/ctypes.h 中, 在我的系统中,这些原始数据类型全部定义与:

/usr/include/sys/_types/
-r--r--r-- 1 root wheel 1413 9 19 23:45 _off_t.h
-r--r--r-- 1 root wheel 1537 9 19 23:45 _os_inline.h
-r--r--r-- 1 root wheel 1420 9 19 23:45 _pid_t.h
-r--r--r-- 1 root wheel 1430 9 19 23:45 _posix_vdisable.h
-r--r--r-- 1 root wheel 1458 9 19 23:45 _pthread_attr_t.h
-r--r--r-- 1 root wheel 1455 9 19 23:45 _pthread_cond_t.h

中,_size_t.h 头文件中定义了__ssize_t__的数据类型, 其他的数据类型可以根据文件名判断出来, 在我的系统中 ssize_t 类型被定义为了

#ifndef _SIZE_T
#define _SIZE_T
typedef __darwin_size_t size_t;
#endif /* _SIZE_T */

第二小节

该小节介绍了 ANSI标准中关于 void * 应用, 在非ANSI   标准的C程序当中, 会有使用 char * 来表示通用指针类型,在ANSI中,则全部使用void * , void和void*的讨论可以参考 这篇文章 , 不过我会按照自己的理解说明一下

void* 字面上是空指针,在实际使用的时候可以当作“范型”指针来使用,就是任何指针都可以指向他, 而他进行强制转换运算后, 可以随意使用, 这种情况就很适合 malloc, read, write 这样的函数来使用,因为我们如果不使用void * 就必须为每一种数据类型写一个read, 这里就体现出了范型的好处了, void则是一个语义上的“空” , 经常用来占位, C中,函数不需要参数和返回的时候都需要这样用void来修饰。

第三小节

书中在这里使用一个段落阐述了unix操作系统中的原始数据类型,大多数结尾是 _t 的类型都是内置的原始类型,这些类型根据不同的平台会又不同的值, 所以需要避免程序设计中使用专门数据类型。

unix 环境高级编程 读书笔记与习题解答第四篇的更多相关文章

  1. unix环境高级编程-读书笔记与习题解答-第一篇

    从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是 ...

  2. unix 环境高级编程-读书笔记与习题解答-第二篇

    第四节 输入与输出 上次的笔记中写到的 open, read, write, lseek 以及close ,都是不带缓存的IO函数,这些函数都使用文件描述符进行工作. 上一篇笔记用到的 read(ST ...

  3. unix-环境高级编程-读书笔记与习题解答-第三篇

    第一章 第五节 进程与控制 该小节比较粗略的阐述了unix操作系统中用于进程控制的三个函数,分别为 : fork , exec, waitpid, 其中 exec 有五种变体, 这些变体实现的功能全部 ...

  4. [置顶] 文件和目录(二)--unix环境高级编程读书笔记

    在linux中,文件的相关信息都记录在stat这个结构体中,文件长度是记录在stat的st_size成员中.对于普通文件,其长度可以为0,目录的长度一般为1024的倍数,这与linux文件系统中blo ...

  5. [置顶] 文件io(一)--unix环境高级编程读书笔记

    unix-like(后面以linux为例)系统中的文件操作只需要五个函数就足够了,open.close.read.write以及lseek.这些操作被称为不带缓存的io,这里有必要说一下带缓存和不带缓 ...

  6. unix进程的环境--unix环境高级编程读书笔记

    http://blog.csdn.net/xiaocainiaoshangxiao/article/category/1800937

  7. unix环境高级编程 读书笔记

    1.上班业余时间把书下载下来,第一章读完了,但是程序只能回家运行啦!Fighting!

  8. Unix环境高级编程学习笔记——fcntl

    写这篇文正主要是为了介绍下fcntl,并将我自己在学习过程中的一些理解写下来,不一定那么官方,也有错误,希望指正,共同进步- fcntl: 一个修改一打开文件的性质的函数.基本的格式是 int fcn ...

  9. 《UNIX环境高级编程》笔记--UNIX标准化及实现

    1.UNIX标准化 1.1.ISO C 1989 年后期,C程序设计语言的ANSI(American National Standards Institute) 标准X3. 15 9-1989得到批准 ...

随机推荐

  1. Qt对话框QDialog

    QDialog是Qt中所有对话框窗口的基类 当QWidget无父组件的时候作为一个独立的窗口,有父组件的时候,将作为一个可见的部件嵌入到父组件里面. QDialog不能作为子部件嵌入到其他容器中 对话 ...

  2. sql 视图 按where条件多个字段取一个 分类: SQL Server 2014-12-01 14:09 308人阅读 评论(0) 收藏

    首先介绍一下 Case ..When...Then..End  的用法: CASEJiXiaoFind_RowID  WHEN '1' THENJiXiao_Money1  WHEN '2' THEN ...

  3. IOS开发中ARC下的assign和weak区别

    在ARC中的assign和weak可以说非常相像,导致有很多人误以为他们是一摸一样的,在任何时候都可以划等价,但事实却不是这样. 在群里,有人问,id类型的delegate属性到底是用assign还是 ...

  4. 【Linux常用工具】1.1 diff命令的三种格式

    diff是用来比较两个文本文件的差异的工具,它有三种格式,下面用实例介绍一下: 准备三个测试文件1.txt 2.txt 3.txt bixiaopeng@bixiaopengtekiMacBook-P ...

  5. 摄像头参数查看与调节 分类: C/C++ OpenCV 2014-11-08 18:13 138人阅读 评论(0) 收藏

    cvGetCaptureProperty 获得视频获取结构的属性 double cvGetCaptureProperty( CvCapture* capture, int property_id ); ...

  6. Android 图标上面添加提醒(一)使用Canvas绘制

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在我们开发一些如通讯录.社交等应用或者应用添加新功能模块时,会考虑在对应的图标上加上未读信息的数量,或者是新功能提醒的图标,这样不占太大空间还能达 ...

  7. MyEclipse8.6安装svn(非link方式)

    此方法经试验可行,暂时可以作为最佳解决方案. 本文所使用的MyEclipse版本为:8.6.1 svn的eclipse插件版本为:1.6.17,下载地址:http://subclipse.tigris ...

  8. Android应用发布后的统计——百度移动统计的应用

    一个App发布到各个渠道之后,我们需要采集不同渠道的一些信息,比如app在运行过程中产生的一些异常信息,app在各个android版本的分布,以及各个app版本的分布,各渠道的用户数,用户忠诚度等等信 ...

  9. DataTable用法

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  10. Apache MINA 框架之默认session管理类实现

    DefaultSocketSessionConfig 类 extends AbstractSocketSessionConfig extends AbstractIoSessionConfig imp ...