摘要:IPC:
管道,FIFO,信号,消息队列(system v/ posix),共享内存(system v/ posix),socket
同步机制:
互斥锁,条件变量,记录上锁,
信号量(system v/ posix):一个特殊的变量,只充许对它进行wait和signal这两种操作(P,V),最简单的信号量是只能取0,1的变量,二进制信号量。普通变量不行,因为不是原子的。
#include 阅读全文
UNIX网络编程5 POSIX 消息队列
2013-08-18 19:11 by anjsoft, 147 阅读, 0 推荐, 收藏, 编辑
摘要:mq_open
mq_close
mq_unlink
mq_getattr/mq_setattr
mq_send/mq_receive
mq_notify
sigwait 代替信号处理程序的信号通知 阅读全文
UNIX网络编程 12 15共享内存区
2013-08-18 14:14 by anjsoft, 146 阅读, 0 推荐, 收藏, 编辑
摘要:管道,FIFO,消息队列,在两个进程交换信息时,都要经过内核传递
共享内存可以绕过,默认fork生成的子进程 并不与父进程共享内存区
mmap
munmap
msync
父子进程共享内存区的方法之一是:父进程fork前指定MAP_SHARED调用mmap 阅读全文
高级UNIX环境编程13 守护进程
2013-08-18 13:13 by anjsoft, 153 阅读, 0 推荐, 收藏, 编辑
摘要:linux下,keventd守护进程为内核中运行的执行的函数提供进程上下文
bdflush,kupdated将高速缓存中的数据冲洗到磁盘上 阅读全文
高级UNIX环境编程11 线程
2013-08-18 11:11 by anjsoft, 276 阅读, 0 推荐, 收藏, 编辑
摘要:pthread_equal
pthread_self(void)
pthread_create()
pthread_close()
pthread_join()
phread_cancel()
pthread_cleanup_push()
pthread_cleanup_pop()
同步:
1互斥量
pthread_mutex_init()
pthread_mutex_destory()
pth... 阅读全文
高级UNIX环境编程10 信号
2013-08-18 10:44 by anjsoft, 116 阅读, 0 推荐, 收藏, 编辑
摘要:信号是软件中断,提供一种处理异步事件的方法 sigaction() 阅读全文
高级UNIX环境编程7 进程
2013-08-18 10:28 by anjsoft, 127 阅读, 0 推荐, 收藏, 编辑
摘要:每个程序都会收到一张环境表 extern char **environ;
c程序的存储空间布局:
正文段:共享,只读
初始化数据段:存函数以外的赋值
非初始化数据段(bbs):block started by symbol 在程序开始之前,内核将此段中数据初始化0或NULL,存储函数以外的声明
栈
堆:堆位于非初始化数据段和栈之间
c中,goto语句不能跨越函数的,执行这类跳转的是setjmp ... 阅读全文
高级UNIX环境编程5 标准IO库
2013-08-18 09:59 by anjsoft, 142 阅读, 0 推荐, 收藏, 编辑
摘要:标准IO库都围绕流进进行的 memccpy 一般用汇编写的
ftell/fseek/ftello/fseeko/fgetpos/fsetpos 定位
在UNIX系统中,标准IO库最终都要调用IO例程 阅读全文
高级UNIX环境编程4 文件和目录
2013-08-18 09:15 by anjsoft, 105 阅读, 0 推荐, 收藏, 编辑
摘要:#include
stat
fstat
lstat
fchmod 对已打开的文件操作 阅读全文
高级UNIX环境编程3 FILE IO
2013-08-18 08:53 by anjsoft, 147 阅读, 0 推荐, 收藏, 编辑
摘要:POSIX中,STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO 对应0,1,2
每个打开的文件都有一个与其想关联的 “current file offset" , sleek() 修改
内核用三个数据结构管理打开的文件 :进程表项(fd标志,文件指针),文件表(文件状态标志,当前文件偏移量,v节点指针),v节点(i节点)
每个进程有自己的进程表项和文件表
#incl... 阅读全文