1.Unix进程间共享信息的三种方式
- 1)进程访问文件系统中某文件的信息,需调用系统函数read、write、lseek等穿越内核。当文件信息更新时,应进行同步,以保证读写的一致性。
- 2)进程之间共享内核中的某些信息。使用管道、System V消息队列 和 System V 信号量等。
- 3)内存设置共享内存区。
2. IPC对象的持续性
- 1)随进程持续的IPC对象:一直存在到IPC对象的最后一个进程关闭该对象为止;
- 2)随内核持续的IPC对象:一直存在到内核重新自举或显式删除IPC对象为止;
- 3)随文件系统持续的IPC对象:一直存在到显式删除IPC对象为止;
3. 包裹函数(wrapper function)
-
定义包裹函数缩短程序长度。它执行实际的函数调用,测试其返回值。当碰到错误时,它总是在输出一个出错消息后终止。命名约定是首字母大写。
void Sem_pos(sem_t *sem) { if (sem_post(sem) == -1) err_sys("sem_post error"); }
4. Posix与OpenGroup
- Posix:Portable Operating System Interface 可移植操作系统接口;
习题
1. <error.h>头文件是如何定义errno变量的?
#ifdef _REENTRANT
#define errno (*_errno())
#else
extern int errno;
#endif