《Linux Programming》华清
‘
1. 文件IO
* 文件buffer
有两层,
一层在OS级别,及在read/write系统调用的操作内实现
另一层在标准库函数内实现,在fread/fwrite实现的时候使用
2. signal
* 信号处理方式:
内核在进程PCB中的相关标志位上set操作
在进程从内核态向用户态转换的时候检查这些标志
若置位,调用signal设置的处理函数处理[之
Q:细节?stack如何处理的?
* setjmp/longjmp
用于临时保存/恢复进程的context,如stack,registers等等?
* 几个宏:如何理解?
#define SIG_ERR ( void (*)()) -1
#define SIG_DFL ( void (*)()) 0
#define SIG_IGN ( void (*)()) 1
* alarm
[root@frank huaqing-linux-c-programming]# cat p9.9.alarm.c
#include <signal.h>
#include <stdio.h>
void handler() {
printf("Alarmed !\n");
}
int main(void) {
int i;
signal(SIGALRM, handler);
alarm(15);
for(i=1; i<10; i++) {
printf("sleep %d ...\n", i);
sleep(1);
}
return 0;
}
Q:return 0后,handler也没有任何机会执行了,因为进程已经被清理掉。
3. 进程前通讯 IPC - Inter-Process Communication
5种主要方式:
管道:用于有亲缘的process间通讯,有名管道可任意process;信息无结构
消息Message:用于结构化信息通讯
共享内存:最底层的东东,其它东东都由它实现
信号量:同步手段,信息量有限
套接字socket:不同机器之间通讯