2016-10-23 02:37
  759      0   

APUE - 进程间通信IPC

daodu
由于进程所处的空间都是独立的,如果多个子进程需要交互数据,那就需要了解进程间通信(InterProcess Communication, IPC)了。这里先介绍前三种通信方式:1. 管道(无名) 只能用于父子进程通信,半双工,单向;2. 命名管道,同一台主机的任意两个进程;3. 共享内存。
daodu.png
  2016-10-22 16:50
  708      0   

APUE - 进程Process

daodu
进程就是正在运行的程序。不管是进程还是线程,主要作用就是可以在同一时间内同时处理多个事情,提升用户体验。像shell终端,如果是单个进程,那每次执行完命令,都需要重新打开终端,非常不利于操作。拿扫雷来说,如果一边开个while(1)来处理输入输出,那如果你需要实时显示时间呢? 学了进程相关的操作后就可以fork一个子程序专门用来显示实时时钟。
daodu.png
  2016-10-21 02:21
  923      0   

APUE - 信号signal

daodu
这里所说的信号也叫软中断信号,当进程接收到一个来自内核的信号,如ctrl+c时,进程就会中断。系统定义了一些宏来表示这些中断。一般以SIG开头,对于这些信号,系统会有默认的处理方式,也可以通过signal函数,自定义处理方式(系统默认处理/ignore/执行某个函数)。
daodu.png
  2016-10-20 19:54
  647      0   

APUE- 文件和目录pwd等命令实现

daodu
了解了文件目录相关的系统调用后,就可以尝试模拟实现各种shell命令了。这里给出了ls -l的完成代码,加上pwd及mkdir -p的实现。里面用到了递归,也涉及到一些细节问题,如根目录的上一级目录还是根目录,chdir需要用户有目录的执行权限。
daodu.png
  2016-10-18 19:56
  657      0   

APUE - 文件和目录ls相关

daodu
C语言操作目录需要使用opendir()和readdir()。此外文件接口函数还有很多,如stat,umask,chmod,chown,link,rename等。这些函数和shell命令有些是一样的,我们可以通过调用这些系统调用来实现一些命令。这里以ls -l的写法为例介绍一些常用的系统调用文件I/O。
daodu.png
  2016-10-18 16:59
  646      0   

APUE - 文件I/O

daodu
UNIX系统中,文件I/O常用的5个函数: open,read,write,lseek,close。与标准I/O相比文件I/O通常称为不带缓冲的I/O(unbuffered)。一般所有I/O都要经过内核的块缓冲。read,write的数据也要被内核缓冲,这里不带缓冲的I/O指的是在用户进程用不会自动缓冲,每次都是系统调用。
daodu.png
  2016-10-17 16:33
  722      0   

初识APUE

daodu
APUE是一本非常经典的书,被认为是在UINX环境下进行程序设计有关人员必读,且需要经常查阅的首选参考书,对于深入了解UNIX及内核源码非常有利。这本书没有花哨的界面,各种高大上的程序都是用C语言编写且在终端下运行,在这个浮躁的社会,能潜心去钻研这本书真的非常不容易。但只要用心去研究,一定会有意想不到的收获。
daodu.png