[单刷APUE系列]第十七章——高级进程间通信

2016-03-21
阅读 7 分钟
3.6k
前面讲述了各种进程间通信和网络IPC的内容,除此以外,还有一种非常常用的IPC——UNIX域套接字。这种套接字实际上就是一种文件,能够让本机的进程之间互相通信。

[单刷APUE系列]第十六章——网络IPC:套接字

2016-03-19
阅读 8 分钟
4k
前一章中讲了经典Unix进程间通信,但是对于不同计算机的不同进程通信是无法使用这种技术的,所以就有了网络间新进程通信的机制。而网络套接字解释一种非常实用的技术。进程将套接字绑定在端口上,通过该接口向其他进程通信,这一章实际上是很重要的一章。

[单刷APUE系列]第十五章——进程间通信

2016-03-17
阅读 11 分钟
3.9k
在前面章节中讲解了进程的派生和常见调用,但是进程之间通信的唯一途径就是通过打开的文件,或者是使用进程之前信号传输,由于这些技术的局限性,Unix系统提供了一种进程间通信模型(IPC)。IPC是进程通信各种方式的统称,目前只有一些经典的IPC方式能做到移植使用:管道、FIFO、消息队列、信号量、共享存储。还有基于套...

[单刷APUE系列]第十四章——高级I/O

2016-03-16
阅读 12 分钟
4k
在最前面,我们讲过IO分成带缓冲的IO和不带缓冲的IO,但是实际上,这个区别并不是很大,因为缓冲区并没有影响到实际的读写。我们知道,系统调用实际上分成两种,高速的系统调用和低速的系统调用,换句话说,低速的调用会导致系统永久性阻塞,但是需要注意的是,并不是磁盘IO都是低速调用。比如open、read、write函数,如...

[单刷APUE系列]第十三章——守护进程

2016-03-14
阅读 5 分钟
3.7k
守护进程对于Unix运维来说应该是不陌生的,所有的提供服务的进程基本上都是守护进程,通常也可以称为服务。它们由init进程启动,并且没有控制终端,是一种执行日常事务的进程。在Unix系统下,有很多守护进程,在基于BSD的系统下运行下列命令

[单刷APUE系列]第十二章——线程控制

2016-03-11
阅读 6 分钟
3.6k
在前一章中,都是使用的函数默认的属性来赋予线程,但是pthread允许我们通过设置对象关联的不同属性来细调线程和同步对象的行为。而管理这些属性的函数基本都是形式相同的。

[单刷APUE系列]第十一章——线程[2]

2016-03-10
阅读 7 分钟
3.6k
线程由于共享同一个进程的内存空间,所以资源的访问也应当如同操作系统一样受到限制,一个线程在读取的时候其他线程不能写入,这种限制被称为同步措施。在学习操作系统原理的时候应当都听过锁的使用。一个资源,如果想要被多个进程访问,最好使用锁机制来确保一致性,不会出现访问冲突。线程也是一样,对于这个情况最简...

[单刷APUE系列]第十一章——线程[1]

2016-03-10
阅读 7 分钟
3.4k
在前面的章节,都是以多进程单线程概念来讲解的,特别是早期的Unix环境,没有引入线程模型,所以无所谓线程概念,也就是一个进程在某一时刻只能做一件事情,而多线程则是可以让进程拥有多个线程,这样进程就能在某一时刻做不止一件事情。线程的好处和缺点就不多说了,相信各位应该都有体会了。当然,多线程和多处理器或...

[单刷APUE系列]第十章——信号[2]

2016-03-06
阅读 7 分钟
3.7k
SIGCLD和SIGCHLD是两个很相似的信号,SIGCLD是SystemV的一个信号名字,而SIGCHLD是BSD信号,但是POSIX.1标准使用了BSD的SIGCHLD信号名称。BSD的SIGCHLD信号是很普通的意思,就是子进程状态改变就会产生这个信号,父进程则是调用wait函数查看子进程的状态,而SystemV的SIGCLD信号则不同,基于SVR4的系统都会继承这个情况。

[单刷APUE系列]第十章——信号[1]

2016-02-28
阅读 7 分钟
3.8k
从前面的文章和实际使用中,大家应该也对信号有一些模糊的认识了。比如,Nginx使用信号来管理进程的启动关闭,UNIX进程信号是经典的操作异步事件机制。在早期,Unix信号是每个实现都不同的,但是随着Unix标准化的进行,标准提出了统一的信号机制模型。除了共有的信号以外,各自的实现还提供了扩展信号,当然,这个不是重...

[单刷APUE系列]第九章——进程关系

2016-02-20
阅读 4 分钟
4.1k
原著这里前面实际上还有两节,但是笔者感觉并不是特别重要,只是Unix各个实现的登录,所以就直接从进程组开始讲。在使用man 2 intro的时候,Unix系统手册上已经写了很多关于系统的概念,其中就有进程组概念

[单刷APUE系列]第八章——进程控制[2]

2016-02-16
阅读 6 分钟
3.8k
目录 [单刷APUE系列]第一章——Unix基础知识[1][单刷APUE系列]第一章——Unix基础知识[2][单刷APUE系列]第二章——Unix标准及实现[单刷APUE系列]第三章——文件I/O[单刷APUE系列]第四章——文件和目录[1][单刷APUE系列]第四章——文件和目录[2][单刷APUE系列]第五章——标准I/O库[单刷APUE系列]第六章——系统数据文件和信息[单刷APUE系...

[单刷APUE系列]第八章——进程控制[1]

2016-02-15
阅读 10 分钟
4.4k
在日常的开发使用过程当中,以及以往的开发经验,都应该知道进程是存在一个ID的,也就是进程ID(process ID),进程ID是唯一的,用以保证进程是唯一存在并且能被唯一获得。但是,在Unix系统中,进程ID是唯一的,但是在进程退出后,系统非常有可能将这个pid交付给新启动的进程,但是这样会导致新进程被误认为是之前存在的进...

[单刷APUE系列]第七章——进程环境

2016-02-09
阅读 7 分钟
4.2k
我们知道,无论是汇编还是C语言还是其他的语言,在编译成实际二进制代码的时候,都是存在着一个入口点,一般来说,这个入口点就是main函数,C语言都是从main函数处开始执行,在Unix开发中,main函数都是长这样的

[单刷APUE系列]第六章——系统数据文件和信息

2016-02-06
阅读 4 分钟
3.9k
使用过Unix系统的朋友应该知道/etc/passwd文件,这就是Unix系统口令文件,在POSIX1.x规范中规定Unix系统必须存在用户数据库,这些用户数据库里每个用户都需要包含一些字段,具体需要查看<pwd.h>头文件。

[单刷APUE系列]第五章——标准I/O库

2016-02-05
阅读 12 分钟
4.4k
在学习C语言的时候,肯定也对标准I/O库有所了解,这个库是由ISO C标注制定的,前面也说过,ISO C被包含在SUS标准中,所以SUS在ISO C的标准上,又进行了扩充。标准I/O库最大的好处就是不需要再和底层内核调用打交道了,非常方便的就能跨平台使用,在前面几节中,大家也对I/O各种繁琐的细节也有些头晕,而标准I/O库就很便...

[单刷APUE系列]第四章——文件和目录[2]

2016-02-04
阅读 14 分钟
4.3k
PS:原先写好文章了,结果备份Boom了,结果只好重写了一遍,文件系统部分本来是准备了图片的,但是现在没了。各位将就着看。 目录 [单刷APUE系列]第一章——Unix基础知识[1][单刷APUE系列]第一章——Unix基础知识[2][单刷APUE系列]第二章——Unix标准及实现[单刷APUE系列]第三章——文件I/O[单刷APUE系列]第四章——文件和目录[1][...

[单刷APUE系列]第四章——文件和目录[1]

2016-02-01
阅读 11 分钟
4.9k
stat()函数获得路径所指向的文件信息,函数不需要文件的读写执行权限,但是路径树中的所有目录都需要搜索权限(search)lstat()函数和stat类似,除了当路径指向为符号链接时,lstat返回链接本身信息,而stat返回对应的文件信息fstat()获取已经打开的文件描述符的文件信息fstatat()系统调用等价于stat和lstat函数,当AT_FDC...

[单刷APUE系列]第三章——文件I/O

2016-01-30
阅读 9 分钟
5.1k
在学习C语言的时候,应该也学习了使用<stdio.h>提供的通用文件操作,在C语言中,已经封装好了File结构体帮助操作文件,打开<stdio.h>

[单刷APUE系列]第二章——Unix标准及实现

2016-01-27
阅读 8 分钟
4.9k
Unix编程环境和C程序设计语言是如此的普遍,而且标准化工作做了非常多,但是20世纪80年代Unix版本种类的剧增以及他们差别的扩大导致跨平台移植变得越来越难,很多用户都呼吁对其进行标准化。Unix标准化有四个,ISO C、IEEE POSIX、Single Unix Specification、FIPS

[单刷APUE系列]第一章——Unix基础知识[2]

2016-01-25
阅读 9 分钟
5.2k
非常感谢一些朋友看这个文章,关于更新的问题,笔者会尽快整理撰写,因为之前的笔记都残缺不全了,所以是重新开始看原著,然后一边看一边写的,所以可能会稍微有点慢。文章里面的代码可能和原著有一些差别,但是都是个人认为应当修改的,如果有问题,敬请指正。

[单刷APUE系列]第一章——Unix基础知识[1]

2016-01-25
阅读 6 分钟
12.8k
Unix系统标准作为目前开发最重要的系统标准,应当是必须懂得的,无论是服务端C++开发还是安卓、iOS开发,实际上都和Unix环境开发密切相关,一个Unix环境开发者在入手安卓和iOS开发,是从来不会去询问很基础的一些问题,比如动态库静态库搜索路径、编译选项、环境变量的问题。目前笔者认为《Unix环境高级编程》ver3是最好...