confide

导航

2011年8月8日 #

unix编程——posix消息队列

摘要: 两个简单的消息队列发送和接受的例子:send.c:#include <stdlib.h>#include <stdio.h>#include <mqueue.h>#include <sys/stat.h>int main(){ mqd_t mqd; struct mq_attr attr; int flags; flags = O_RDWR | O_CREAT; mqd = mq_open("/temp.1234",flags,S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH,NULL); mq_getattr( 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(287) 评论(0) 推荐(0)

UNIX编程学习——malloc与free的实现(C)

摘要: 以下是K&R第二版中文版原话: malloc不是分配一个编译时已知的固定大小的数组,而是当需要时向操作系统申请空间。由于程序中的其他地方需要申请空间,并不一定通过调用malloc实现,因此由malloc管理的空间不一定是连续的。因此空闲的存储空间以空闲块列表的方式保存,每个块包含有一个长度、指向下一个的指针和自己的存储空间。这些块以地址的上升顺序排列在一起,最后一块(最高地址)指向第一块。 当有申请请求时,扫描空闲块列表以找到一个足够大的块,这个算法称为“最先匹配”;与之对应的算法是“最优匹配”它寻找满足条件且最小的块。如果这个块刚好与请求的大小相符合,将它从链表中移走并返回给用户。如 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(360) 评论(0) 推荐(0)

unix编程学习——文件写空洞

摘要: 文件偏移量可以大于文件长度,在这种情况下,文件的下一次写将加长该文件并在文件中构成一个空洞,这是被允许的,并且文件中未被写的部分均读取为0。文件的空洞并不要求在磁盘上占用存储空间,具体的处理方式与文件系统有关。 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(243) 评论(0) 推荐(0)