- 浏览: 64255 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
brxonline:
提示不能这样写234390216 写道234390216 写道 ...
mysql导出数据为excel -
234390216:
234390216 写道不行啊,错误
提示不能这样写
mysql导出数据为excel -
234390216:
不行啊,错误
mysql导出数据为excel
1.open函数
#include <fcntl.h>
int open(const char *pathname, int oflag, .../*mode_t mode */);
oflag参数:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写打开
这三个必须指定一个
下面是可选的:
O_APPEND 每次写时都追加到文件的尾端
O_CREAT 若此文件不存在,则创建它
O_EXCL 如果同时指定了O_CREAT, 而文件已经存在,则会出错
O_TRUNC 如果此文件存在,而且为只写或读写成功打开,则将其长度截短为0
O_NOCTTY
O_NONBLOCK
O_DSYNC 使每次write等待物理I/O操作完成,但是如果写操作并不影响读取刚写入的数据,则不等待文件属性被更新
O_RSYNC 使每次一个以文件描述符作为参数的read操作等待,直至任何对文件同一 部分进行的未决写操作都完成
O_SYNC 使每次write等待物理I/O操作完成,包括由write操作引起的文件属性更新所需的IO
2.create函数
#include <fcntl.h>
int creat(const char *pathname, mode_t mode);
等价于 open(pathname, O_WRONLY|O_CREAT|O_TRUNC, mode);
3.close函数
关闭一个打开的文件
#include <unistd.h>
int close(int filedes);
4.lseek函数
#include <unistd.h>
off_t lseek(int filedes, off_t offset, int whence);
whence取值说明:
SEEK_SET 则将该文件的偏移量设置为距文件开始处offset个字节
SEEK_CUR 则将该文件的偏移量设置为其当前值加offset,offset可正负
SEEK_END 则将该文件的偏移量设置为文件长度加offset,offset可正负
测试能否对标准输入设置偏移量
创建一个具有空洞的文件
5.read函数
#include <unistd.h>
ssize_t read(int filedes, void *buf, size_t nbytes);
6.write函数
#include <unistd.h>
ssize_t write(int filedes, const void *buf, size_t
nbytes);
将标准输入复制到标准输出
7.pread和pwrite函数
#include <unistd.h>
ssize_t pread(int filedes, void *buf, size_t
nbytes, off_t offset);
ssize_t pwrite(int filedes, const void *buf,
size_t nbytes, off_t offset);
相当于顺序调用lseek和read或write,但pread和pwrite是原子操作
8.dup和dup2函数
复制一个现存的文件描述符
9.sync,fsync和fdatasync函数
#include <unistd.h>
int fsync(int filedes);
int fdatasync(int filedes);
void sync(void);
sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,并不等待实际写磁盘操作结束
fsync函数只对由文件描述符filedes指定单一文件起作用,并且等待写磁盘操作结束
fdatasync类似于fsync,但他只影响文件的数据部分。fsync还会同步更新文件的属性。
10.fcntl函数
#include <fcntl.h>
int fcntl(int filedes, int cmd, ... /* int arg */ );
cmd说明:
F_DUPFD 复制一个现有的描述符
F_GETFD 复制文件描述符
F_SETFD 设置文件描述符
F_GETFL 对应于filedes的文件状态标志作为函数值返回
F_SETFL 将文件状态标志设置为第三个参数值
F_GETOWN 取当前接受SIGIO和SIGURG信号的进程ID或进程组ID
F_SETOWN 设置接受SIGIO和SIGURG信号的进程ID或进程组ID
对于指定的描述符打印文件标志
对一个文件描述符打开一个或多个文件状态标志
11.ioctl函数
#include <unistd.h> /* System V */
#include <sys/ioctl.h> /* BSD and Linux */
#include <stropts.h> /* XSI STREAMS */
int ioctl(int filedes, int request, ...);
ioctl函数是IO操作的杂物箱。
#include <fcntl.h>
int open(const char *pathname, int oflag, .../*mode_t mode */);
oflag参数:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写打开
这三个必须指定一个
下面是可选的:
O_APPEND 每次写时都追加到文件的尾端
O_CREAT 若此文件不存在,则创建它
O_EXCL 如果同时指定了O_CREAT, 而文件已经存在,则会出错
O_TRUNC 如果此文件存在,而且为只写或读写成功打开,则将其长度截短为0
O_NOCTTY
O_NONBLOCK
O_DSYNC 使每次write等待物理I/O操作完成,但是如果写操作并不影响读取刚写入的数据,则不等待文件属性被更新
O_RSYNC 使每次一个以文件描述符作为参数的read操作等待,直至任何对文件同一 部分进行的未决写操作都完成
O_SYNC 使每次write等待物理I/O操作完成,包括由write操作引起的文件属性更新所需的IO
2.create函数
#include <fcntl.h>
int creat(const char *pathname, mode_t mode);
等价于 open(pathname, O_WRONLY|O_CREAT|O_TRUNC, mode);
3.close函数
关闭一个打开的文件
#include <unistd.h>
int close(int filedes);
4.lseek函数
#include <unistd.h>
off_t lseek(int filedes, off_t offset, int whence);
whence取值说明:
SEEK_SET 则将该文件的偏移量设置为距文件开始处offset个字节
SEEK_CUR 则将该文件的偏移量设置为其当前值加offset,offset可正负
SEEK_END 则将该文件的偏移量设置为文件长度加offset,offset可正负
测试能否对标准输入设置偏移量
#include "apue.h" int main(void) { if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1) printf("cannot seek\n"); else printf("seek OK\n"); exit(0); }
创建一个具有空洞的文件
#include "apue.h" #include <fcntl.h> char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ"; int main(void) { int fd; if ((fd = creat("file.hole", FILE_MODE)) < 0) err_sys("creat error"); if (write(fd, buf1, 10) != 10) err_sys("buf1 write error"); /* offset now = 10 */ if (lseek(fd, 16384, SEEK_SET) == -1) err_sys("lseek error"); /* offset now = 16384 */ if (write(fd, buf2, 10) != 10) err_sys("buf2 write error"); /* offset now = 16394 */ exit(0); }
5.read函数
#include <unistd.h>
ssize_t read(int filedes, void *buf, size_t nbytes);
6.write函数
#include <unistd.h>
ssize_t write(int filedes, const void *buf, size_t
nbytes);
将标准输入复制到标准输出
#include "apue.h" #define BUFFSIZE 4096 int main(void) { int n; char buf[BUFFSIZE]; while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) if (write(STDOUT_FILENO, buf, n) != n) err_sys("write error"); if (n < 0) err_sys("read error"); exit(0); }
7.pread和pwrite函数
#include <unistd.h>
ssize_t pread(int filedes, void *buf, size_t
nbytes, off_t offset);
ssize_t pwrite(int filedes, const void *buf,
size_t nbytes, off_t offset);
相当于顺序调用lseek和read或write,但pread和pwrite是原子操作
8.dup和dup2函数
复制一个现存的文件描述符
9.sync,fsync和fdatasync函数
#include <unistd.h>
int fsync(int filedes);
int fdatasync(int filedes);
void sync(void);
sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,并不等待实际写磁盘操作结束
fsync函数只对由文件描述符filedes指定单一文件起作用,并且等待写磁盘操作结束
fdatasync类似于fsync,但他只影响文件的数据部分。fsync还会同步更新文件的属性。
10.fcntl函数
#include <fcntl.h>
int fcntl(int filedes, int cmd, ... /* int arg */ );
cmd说明:
F_DUPFD 复制一个现有的描述符
F_GETFD 复制文件描述符
F_SETFD 设置文件描述符
F_GETFL 对应于filedes的文件状态标志作为函数值返回
F_SETFL 将文件状态标志设置为第三个参数值
F_GETOWN 取当前接受SIGIO和SIGURG信号的进程ID或进程组ID
F_SETOWN 设置接受SIGIO和SIGURG信号的进程ID或进程组ID
对于指定的描述符打印文件标志
#include "apue.h" #include <fcntl.h> int main(int argc, char *argv[]) { int val; if (argc != 2) err_quit("usage: a.out <descriptor#>"); if ((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0) err_sys("fcntl error for fd %d", atoi(argv[1])); switch (val & O_ACCMODE) { case O_RDONLY: printf("read only"); break; case O_WRONLY: printf("write only"); break; case O_RDWR: printf("read write"); break; default: err_dump("unknown access mode"); } if (val & O_APPEND) printf(", append"); if (val & O_NONBLOCK) printf(", nonblocking"); #if defined(O_SYNC) if (val & O_SYNC) printf(", synchronous writes"); #endif #if !defined(_POSIX_C_SOURCE) && defined(O_FSYNC) if (val & O_FSYNC) printf(", synchronous writes"); #endif putchar('\n'); exit(0); }
对一个文件描述符打开一个或多个文件状态标志
#include "apue.h" #include <fcntl.h> void set_fl(int fd, int flags) /* flags are file status flags to turn on */ { int val; if ((val = fcntl(fd, F_GETFL, 0)) < 0) err_sys("fcntl F_GETFL error"); val |= flags; /* turn on flags */ if (fcntl(fd, F_SETFL, val) < 0) err_sys("fcntl F_SETFL error"); }
11.ioctl函数
#include <unistd.h> /* System V */
#include <sys/ioctl.h> /* BSD and Linux */
#include <stropts.h> /* XSI STREAMS */
int ioctl(int filedes, int request, ...);
ioctl函数是IO操作的杂物箱。
发表评论
-
UNIX网络编程(1)-简介
2011-10-06 17:31 8031.bzero函数 bzero 等同于memset(void ... -
UNIX编程(15)-进程间通信
2011-08-07 12:09 1125. 管道 #include <un ... -
UNIX编程(14)-高级IO
2011-08-03 21:36 14231.非阻塞IO 对于一个给定的描述符有两种方法对其指定非阻塞 ... -
UNIX编程(13)-守护进程
2011-08-02 21:59 9631.守护进程的编程规则 1)用umask将文件模式创建屏蔽字 ... -
UNIX编程(12)-线程控制
2011-07-27 15:26 9491.线程限制 某些系统有线程的限制,可以通过sysconf函 ... -
UNIX编程(11)-线程
2011-07-27 14:34 9841.线程标识 每个线程都有一个线程ID,线程ID只在它所属的 ... -
UNIX编程(10)-信号
2011-07-20 21:18 10361.signal函数 #include ... -
UNIX编程(9)-进程关系
2011-07-12 14:41 11571.终端登录 2.网络登录 3.进程组 ... -
UNIX编程(8)-进程控制
2011-07-09 11:37 12111.进程标识符 每个进程 ... -
UNIX编程(7)-进程环境
2011-07-01 15:07 9081.main 函数 c程序总是从main函数开始执行,当内核 ... -
UNIX编程(6)-系统数据文件和信息
2011-06-28 16:35 12031.口令文件 口令文件存储在/etc/passwd中,是一个A ... -
UNIX编程(5)-标准IO库
2011-06-27 16:55 9781.流的定向 freopen函数清 ... -
UNIX编程(4)-文件和目录
2011-06-23 16:56 12831.stat,fstat,lstat函数 #include & ... -
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 ...
相关推荐
《TCP/IP 详解》(3卷),《UNIX网络编程》(2卷)参考书2:《Linux系统编程》RobertLoVe [美] 参考书3:《Linux/UNIX系统编
【Java网络编程--Unix域协议:实现】 Unix域协议,也称为本地域协议或套接字域协议,是用于在同一台计算机上不同进程间通信的一种高效机制。它提供了类似于TCP/IP套接字接口的API,但不涉及网络传输,因此速度更快...
标题 "PyPI 官网下载 | sphinxcontrib-drawio-0.0.7.tar.gz" 暗示我们讨论的是一个在Python Package Index (PyPI) 上发布的软件包,名为`sphinxcontrib-drawio`,版本号为0.0.7。这个包是以tar.gz格式提供的,这是...
"commons-io-2.8.0.rar"是一个包含 Commons IO 库版本2.8.0的压缩包文件,便于开发者在项目中引用和使用。 在 Commons IO 中,我们可以找到许多有用的类和方法,这些在处理文件、流、字符集转换、读写操作等方面...
《UNIX环境高级编程》是一本深入探讨UNIX系统编程的电子书,共分为23个部分,涵盖19章。在这一章中,作者主要讲解了标准I/O库,这是一个在多个操作系统上广泛实现的库,由ANSI C标准定义。标准I/O库的设计目的是简化...
本资源“商业编程-源码-基于select IO模型的远程目录浏览与多线程文件下载.zip”提供了一个具体实现,让我们来深入探讨其中涉及的关键知识点。 首先,IO模型的选择对系统性能有着直接影响。这里采用的是`select`...
"07-fileio.rar"这个压缩包文件很可能包含了一本关于Linux和UNIX系统编程的手册的源码,这为我们深入学习这两个操作系统的I/O机制提供了宝贵的资源。下面,我们将详细探讨Linux和UNIX系统中的文件I/O。 1. **文件I/...
《PyPI官网下载:ie-a-ia-io-0.1.2.tar.gz——探索Python库的奥秘》 PyPI(Python Package Index)是Python世界中的一个重要组成部分,它是Python开发者分享和获取开源软件包的中心仓库。PyPI官网提供了一个方便的...
Java的IO体系是Java编程中的重要组成部分,它提供了丰富的API用于实现文件操作、网络通信等功能。本篇将详细介绍Java IO体系的基础概念、核心类及接口,并通过具体示例帮助理解。 #### 二、File类详解 1. **File类...
- 在标签中提到的“文件处理类”可能是指在编程语言中处理文件的类库。例如在Python中,有`open()`函数和相关的文件对象方法;在Java中,有`java.io`包下的`BufferedReader`、`BufferedWriter`等类。 6. 版本控制...
描述中提到的"platformio-3.2.1.tar.gz"是一个典型的Unix/Linux风格的归档文件,使用gzip压缩算法。这种格式在开源软件分发中非常常见,因为它能有效减小文件大小,便于传输和存储。解压后,用户将能够访问到...
此外,课程还覆盖了异步非阻塞编程模型,例如IO多路复用和事件驱动编程,这些技术对于开发高并发和高性能的网络应用至关重要。 网络异常处理和安全性是课程中的重要环节。学生将学会如何优雅地处理网络异常,例如...
在计算机编程中,经常需要检查一个文件是否存在。这通常是为了确保程序在尝试打开或读取文件之前不会出现错误。例如,在用户输入了一个文件名后,我们可能希望验证该文件确实存在于指定的位置。 #### 二、使用VBA...
根据提供的文件信息,我们可以从标题、描述以及部分可见的内容中提取出有关Unix编程环境的关键知识点。下面将对这些知识点进行详细的阐述。 ### Unix编程环境概述 #### 1. **Unix系统简介** - **起源与历史**:...
在编程领域,获取当前文件所在的目录是一项常见的任务,特别是在需要动态定位资源文件或者构建相对路径时。本资源包“计算机软件-编程源码-取得当前文件所在的目录.zip”显然是为了帮助开发者实现这一功能而提供的。...
### UNIX环境高级编程知识点概述 ...综上所述,《UNIX环境高级编程》这本书涵盖了从基础到高级的UNIX编程技术,通过深入学习这些知识点,读者能够更好地理解和掌握如何在UNIX环境下进行高效、稳定的软件开发工作。
本书主要介绍了UNIX系统下的编程技术,强调了使用C语言进行系统编程的方法,是学习Linux和UNIX编程人员的必备书籍。 书中系统地讲解了UNIX系统编程的方方面面,包括文件和目录的操作、标准I/O库、系统数据文件和...
在Perl或其他编程语言中,IO-Compress-Base库提供了方便的API,使开发者能够创建和读取.zip文件。 3. **bzip2格式**:bzip2是一种高效的无损压缩算法,其压缩率通常高于传统的gzip。然而,它的压缩和解压缩速度较慢...