- 浏览: 64269 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
brxonline:
提示不能这样写234390216 写道234390216 写道 ...
mysql导出数据为excel -
234390216:
234390216 写道不行啊,错误
提示不能这样写
mysql导出数据为excel -
234390216:
不行啊,错误
mysql导出数据为excel
1.非阻塞IO
对于一个给定的描述符有两种方法对其指定非阻塞IO
1)如果调用open获得描述符,则可指定O_NONBLOCK标志
2)对于一个已经打开的描述符,则可调用fcntl由该函数打开O_NONBLOCK文件状态标志
#include "apue.h" #include <errno.h> #include <fcntl.h> char buf[500000]; int main(void) { int ntowrite, nwrite; char *ptr; ntowrite = read(STDIN_FILENO, buf, sizeof(buf)); fprintf(stderr, "read %d bytes\n", ntowrite); set_fl(STDOUT_FILENO, O_NONBLOCK); /* set nonblocking */ ptr = buf; while (ntowrite > 0) { errno = 0; nwrite = write(STDOUT_FILENO, ptr, ntowrite); fprintf(stderr, "nwrite = %d, errno = %d\n", nwrite, errno); if (nwrite > 0) { ptr += nwrite; ntowrite -= nwrite; } } clr_fl(STDOUT_FILENO, O_NONBLOCK); /* clear nonblocking */ exit(0); }
2. 记录锁
记录锁锁定文件中的一个区域
#include <fcntl.h> int fcntl(int filedes, int cmd, ... /* struct flock *flockptr */ );
|
Returns: depends on cmd if OK (see following), 1 on error |
cmd is F_GETLK, F_SETLK, or F_SETLKW
struct flock {
short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
off_t l_start; /* offset in bytes, relative to l_whence */
short l_whence; /* SEEK_SET, SEEK_CUR, or SEEK_END */
off_t l_len; /* length, in bytes; 0 means lock to EOF */
pid_t l_pid; /* returned with F_GETLK */
};
例:加锁和解锁一个文件区域的函数
#include "apue.h" #include <fcntl.h> int lock_reg(int fd, int cmd, int type, off_t offset, int whence, off_t len) { struct flock lock; lock.l_type = type; /* F_RDLCK, F_WRLCK, F_UNLCK */ lock.l_start = offset; /* byte offset, relative to l_whence */ lock.l_whence = whence; /* SEEK_SET, SEEK_CUR, SEEK_END */ lock.l_len = len; /* #bytes (0 means to EOF) */ return(fcntl(fd, cmd, &lock)); }
锁的隐含继承和释放
1)
2)
3)
4)
建议性锁和强制性锁
3.STREAMS
1)putmsg和putpmsg函数
2)ioctl
3)写至流
4)写模式
5)getmsg和getpmsg函数
6)读模式
4.IO多路转接
#include <sys/select.h>
int select(int maxfdp1, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict exceptfds, struct timeval *restrict tvptr);
|
Returns: count of ready descriptors, 0 on timeout, 1 on error |
#include <sys/select.h> int pselect(int maxfdp1, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict exceptfds, const struct timespec *restrict tsptr, const sigset_t *restrict sigmask);
|
Returns: count of ready descriptors, 0 on timeout, 1 on error |
#include <poll.h> int poll(struct pollfd fdarray[], nfds_t nfds, int timeout);
|
Returns: count of ready descriptors, 0 on timeout, 1 on error |
5.异步IO
6.readv和writev函数
7.readn和writen函数
8存储映射IO
#include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off );
|
Returns: starting address of mapped region if OK, MAP_FAILED on error |
例:用存储映射IO复制文件
#include "apue.h" #include <fcntl.h> #include <sys/mman.h> int main(int argc, char *argv[]) { int fdin, fdout; void *src, *dst; struct stat statbuf; if (argc != 3) err_quit("usage: %s <fromfile> <tofile>", argv[0]); if ((fdin = open(argv[1], O_RDONLY)) < 0) err_sys("can't open %s for reading", argv[1]); if ((fdout = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, FILE_MODE)) < 0) err_sys("can't creat %s for writing", argv[2]); if (fstat(fdin, &statbuf) < 0) /* need size of input file */ err_sys("fstat error"); /* set size of output file */ if (lseek(fdout, statbuf.st_size - 1, SEEK_SET) == -1) err_sys("lseek error"); if (write(fdout, "", 1) != 1) err_sys("write error"); if ((src = mmap(0, statbuf.st_size, PROT_READ, MAP_SHARED, fdin, 0)) == MAP_FAILED) err_sys("mmap error for input"); if ((dst = mmap(0, statbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fdout, 0)) == MAP_FAILED) err_sys("mmap error for output"); memcpy(dst, src, statbuf.st_size); /* does the file copy */ exit(0); }
发表评论
-
UNIX网络编程(1)-简介
2011-10-06 17:31 8041.bzero函数 bzero 等同于memset(void ... -
UNIX编程(15)-进程间通信
2011-08-07 12:09 1125. 管道 #include <un ... -
UNIX编程(13)-守护进程
2011-08-02 21:59 9641.守护进程的编程规则 1)用umask将文件模式创建屏蔽字 ... -
UNIX编程(12)-线程控制
2011-07-27 15:26 9511.线程限制 某些系统有线程的限制,可以通过sysconf函 ... -
UNIX编程(11)-线程
2011-07-27 14:34 9841.线程标识 每个线程都有一个线程ID,线程ID只在它所属的 ... -
UNIX编程(10)-信号
2011-07-20 21:18 10371.signal函数 #include ... -
UNIX编程(9)-进程关系
2011-07-12 14:41 11581.终端登录 2.网络登录 3.进程组 ... -
UNIX编程(8)-进程控制
2011-07-09 11:37 12131.进程标识符 每个进程 ... -
UNIX编程(7)-进程环境
2011-07-01 15:07 9091.main 函数 c程序总是从main函数开始执行,当内核 ... -
UNIX编程(6)-系统数据文件和信息
2011-06-28 16:35 12041.口令文件 口令文件存储在/etc/passwd中,是一个A ... -
UNIX编程(5)-标准IO库
2011-06-27 16:55 9791.流的定向 freopen函数清 ... -
UNIX编程(4)-文件和目录
2011-06-23 16:56 12841.stat,fstat,lstat函数 #include & ... -
UNIX编程(3)-文件IO
2011-06-21 17:45 14681.open函数 #include <fcntl.h&g ... -
UNIX编程(2)-UNIX标准化
2011-06-15 11:41 7211.ISO c 2.IEEE POSIX 3.Single U ... -
UNIX编程(1)-基础知识
2011-06-15 10:54 8411.登陆名 登陆名放在/etc ...
相关推荐
《UNIX环境高级编程》是一本深入探讨UNIX系统编程的电子书,共分为23个部分,涵盖19章。在这一章中,作者主要讲解了标准I/O库,这是一个在多个操作系统上广泛实现的库,由ANSI C标准定义。标准I/O库的设计目的是简化...
在UNIX环境下进行高级编程涉及多种概念和技术,例如进程控制、信号处理、高级IO、终端控制、数据库调用和网络编程。第二版中文版将会对这些高级概念提供深入的讲解和示例,引导读者从基础理论走向实践应用。 ### ...
此外,课程还覆盖了异步非阻塞编程模型,例如IO多路复用和事件驱动编程,这些技术对于开发高并发和高性能的网络应用至关重要。 网络异常处理和安全性是课程中的重要环节。学生将学会如何优雅地处理网络异常,例如...
- **Unix编程环境**:包括但不限于编译器、调试器、链接器等工具,以及shell脚本编写能力。 #### 二、C语言在Unix中的应用 - **C语言基础**:介绍C语言的基本语法、数据类型、控制结构等内容。 - **C语言与Unix ...
UNIX环境高级编程是一本专注于C语言编程的高级书籍,主要涉及UNIX系统的深层次使用和编程技巧。本书不仅涵盖了UNIX系统的文件结构、IO库等基础知识,而且深入探讨了进程管理、进程间通讯等高级话题。UNIX系统是多...
《UNIX环境高级编程》是UNIX编程领域的经典教材,作者是W. Richard Stevens。这本书详细介绍了UNIX环境下的高级编程技术,是学习UNIX系统编程不可或缺的参考书籍。本书不仅适合有经验的程序员,也非常适合编程初学者...
文档清晰,被认为是一份非常有价值的资源,适合希望深入学习UNIX编程的人士参考。 - **分享目的**:通过社区分享的形式,让更多人能够接触到这份宝贵的资料,促进学习和交流。 #### 3. 标签理解 - **标签含义**:...
- **高级特性**:探讨非阻塞IO、多路复用等高级网络编程技术。 ### 结论 本书《Unix编程环境》是一本经典的参考书籍,不仅适合初学者入门学习,也适合有一定基础的开发者深入研究。通过学习这本书,读者可以全面...
10. **12高级IO.pdf**: 高级I/O通常涉及非阻塞I/O、异步I/O和多路复用技术,如select、poll和epoll,这些都是处理大量并发连接的关键技术。 通过这些章节的学习,读者可以掌握在UNIX环境中进行高效编程所需的高级...
中文名: UNIX环境高级编程 原名: UNIX环境高级编程 作者: W.Richard Stevens / Stephen A.Rago译者: 尤晋元 / 张亚英 ...第12章高级IO 第13章精灵进程 第14章进程间通信 第15章高级进程间通信 第16章数据库函数库 .....
### Unix环境高级编程知识点 #### 1. 程序结束返回值 - **返回值范围**:在Unix环境中,程序结束时...通过以上知识点,我们可以了解到Unix环境下的一些核心概念和技术细节,这对于深入理解和掌握Unix编程至关重要。
**UNIX 环境高级编程知识点** 1. **空洞文件**:空洞文件是一种特殊类型的文件,其中数据部分...这些是针对“武大UNIX环境高级编程2019年考试题目”所涵盖的主要知识点,对于深入理解UNIX编程原理和实践具有重要意义。