上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 59 下一页
摘要: 存储映射I/O(Memory-mapped I/O)使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应字节。与此类似,将数据存入缓冲区,则相应字节就自动地写入文件。这样就可以在不使用read和write的情况下执行I/O。 为了使用这种功能,应首先告诉内核将一个给定的文件映射到一个存储区域中。这是由mmap函数实现的。 #include void... 阅读全文
posted @ 2014-02-21 16:14 ITtecman 阅读(1496) 评论(0) 推荐(0) 编辑
摘要: 管道、FIFO以及某些设备,特别是终端、网络和STREAMS设备有下列两种性质: (1)一次read操作所返回的数据可能少于所要求的数据,即使还没有达到文件尾端也可能是这样。这不是一个错误,应当继续读该设备。 (2)一次write操作的返回值也可能少于指定输出的字节数。这可能是由若干因素造成的,例如,下游模块的流量控制限制。这也不是错误,应当继续写余下的数据至该设备。(通常,只有对非阻塞描述符... 阅读全文
posted @ 2014-02-21 14:19 ITtecman 阅读(3923) 评论(0) 推荐(0) 编辑
摘要: readv和writev函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数称为散布读(scatter read)和聚集写(gather write)。#include ssize_t readv(int filedes, const struct iovec *iov, int iovcnt);ssize_t writev(int filedes, const struct iovec *iov, int iovcnt);两个函数的返回值:若成功则返回已读、写的字节数,若出错则返回-1这两个函数的第二个参数是指向iovec结构数组的一个指针:注:关于上面两个函数中第二个参数的说 阅读全文
posted @ 2014-02-21 13:43 ITtecman 阅读(16868) 评论(2) 推荐(3) 编辑
摘要: A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes; An asynchronous I/O operation does not cause the requesting process to be blocked; 使用http:... 阅读全文
posted @ 2014-02-20 22:17 ITtecman 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 当从一个描述符读,然后又写到另一个描述符时,可以在下列形式的循环中使用阻塞I/O:while ((n = read(STDIN_FILENO, buf, BUFSIZ)) > 0) if (write(STDOUT_FILENO, buf, n) != n) err_sys("w... 阅读全文
posted @ 2014-02-20 14:26 ITtecman 阅读(1109) 评论(0) 推荐(0) 编辑
摘要: http://en.wikipedia.org/wiki/STREAMSSTREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统V的终端接口、I/O多路转接中poll(轮询)函数的使用 以及基于STREAMS的管道和命名管道的实现。请注意不要将这里说明的STREAMS(流)与标准I/O库(http://www.cnblogs.com/nufangrensheng/p/3505254.html)中使用的流(stream)相混淆。流机制是由Dennis Ritchie开发的,其目的是用通用、灵活的方法改写传统的字符I/O系统(c 阅读全文
posted @ 2014-02-19 20:26 ITtecman 阅读(1831) 评论(0) 推荐(0) 编辑
摘要: 若两个人同时编辑一个文件,其后果将如何呢?在很多UNIX系统中,该文件的最后状态取决于写该文件的最后一个进程。但是对于有些应用程序(例如数据库),进程有时需要确保它正在单独写一个文件。为了向进程提供这种功能,商用UNIX系统提供了记录锁机制。 记录锁(record locking)的功能是:当一个进程正在读或修改文件的某个部分时,它可以阻止其他进程修改同一文件区。对于UNIX系统而言,“记录”这... 阅读全文
posted @ 2014-02-18 14:02 ITtecman 阅读(1864) 评论(1) 推荐(0) 编辑
摘要: http://www.cnblogs.com/nufangrensheng/p/3515035.html中曾将系统调用分成“低速”系统调用和其他系统调用两类。低速系统调用是可能会使进程永远阻塞的一类系统调用,它们包括下列调用:如果某些文件类型(例如管道、终端设备和网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞。如果数据不能立即被上述同样类型的文件接受(由于在管道中无空间、网络流控制等),则写操作也会使调用者永远阻塞。在某种条件发生之前,打开某些类型的文件会被阻塞(例如打开一个终端设备可能需等到与之连接的调制解调器应答;又例如在没有其他进程已用读模式打开该FIFO时,若以只写模式打开F 阅读全文
posted @ 2014-02-11 20:25 ITtecman 阅读(777) 评论(0) 推荐(0) 编辑
摘要: /** Error routines for programs that can run as a daemon.*/#include "apue.h"#include /* for definition of errno */#include /* ISO C variable arguments */#include static void log_doit(int, i... 阅读全文
posted @ 2014-02-11 17:20 ITtecman 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 守护进程常常用作服务器进程。 一般而言,服务器是等待客户进程与其联系的一个进程,客户进程向它提出某种类型的服务要求。 阅读全文
posted @ 2014-02-11 16:48 ITtecman 阅读(236) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 59 下一页