【APUE】文件I/O

文件描述符

对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。

按照惯例,UNIX系统shell使用文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准错误输出相关联。

open函数:打开或创建一个文件

#include <fcntl.h>

int open(const char *pathname,int oflag,...);

pathname是要打开或创建文件的名字,oflag参数用来说明此函数的多个选项

create函数:创建文件

#include <fcntl.h>

int creat(const char *pathname,mode_t mode);

close函数

#include <unistd.h>

int close(int filedes);

lseek函数

每个打开的文件都有一个与其相关联的当前文件偏移量,表示文件内容开始处距文件开始处的字节数

#include <unistd.h>

off_t lseek(int fieldes,off_t offset,int whence)

调用lseek函数显式地为一个打开的文件设置偏移量

read函数:从打开文件中读数据

#include <unistd.h>

ssize_t read(int filedes,void *buf,size_t nbytes);

如read成功,则返回读到的字节数,如已到达文件结尾,则返回0

write函数:向打开的文件写数据

#include <unistd.h>

ssize_t write(int filedes,const void *buf,size_t nbytes);

【APUE】文件I/O

时间: 2024-10-10 20:38:39

【APUE】文件I/O的相关文章

[APUE]文件和目录

一.APUE这一章中的各种晦涩名词 我在读这一章时遇到了各种ID,根据名字完全不清楚什么意思,幸好看到了这篇文章,http://blog.csdn.net/ccjjnn19890720/article/details/6990656,总结一下 每一个进程其实对应了6个以上的ID,它们分别是:实际用户ID.实际组ID(我们实际上是谁,执行这个程序的用户和组),有效用户ID.有效组ID.附加组ID(用于文件访问权限检查),保存设置用户ID,保存设置组ID(由exec函数保存) 实际用户ID/实际组I

APUE: 文件和目录相关的系统调用

Tips:下面的总结是参考APUE(unix环境高级编程)这本书,在linux(ubuntu)上的实现. Linux系统的调用结构: 最上层:应用程序+shell命令(外部命令在coreutils中实现,内部命令在bash中实现) 中间层:linux下的库函数(gnu的c标准库在glibc中实现) 最底层:linux内核(163个linux系统调用接口+内核子系统(驱动)) 系统调用是linux内核和外部的唯一接口. unix的标准主要有两个: posix标准:可移植操作系统接口,IEEE.IS

[APUE]文件和目录(中)

一.link.unlink.remove和rename 一个文件可以有多个目录项指向其i节点.使用link函数可以创建一个指向现存文件连接 #include <unistd.h> int link(const char *existingpath, const char *newpath); 返回值:成功为0,出错为-1 该函数创建一个新目录项newpath,指向现存文件existingpath,如果newpath已存在则返回出错. 为了删除一个现存的目录项,可以调用unlnk函数. #inc

APUE学习-记录一

从开始看APUE已经有快一个星期了,由于正好赶上这几天清明节放假,难得有了三天空闲假期可以不受打扰的学习APUE,现在已经看完前六章了,里面的大部分例程也都亲自编写,调试过了.但总觉得这样学过就忘,因此决定把这个学习过程记录下来,学到后面章节的时候回顾前面的章节,做到温故知新.也可以将自己在学习过程中遇到的问题记录下来. 本书对UNIX系统的提供的接口的方方面面进行了讲解,中间还穿插介绍了很多UNIX或类UNIX系统的相关知识,即使现在我只是看过了前六章,也感觉学到了不少知识,解决了我以前对LI

最佳vim技巧

最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim.org         : 官方站点comp.editors        : 新闻组http://www.newriders.com/books/opl/ebooks/0735710015.html : Vim书籍http://vimdoc.sourceforge.net/cgi-bin/vim

apue第四章 文件和目录

函数stat,fstat,fstatat, lstat #include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); int fstat(int fd, struct stat *buf); int lstat(const char *restrict pathname, struct stat *restrict buf); int lstat(int fd, const c

APUE(4)---文件和目录 (2)

umask函数为进程设置文件模式创建屏蔽字,并返回之前的值,这是少数几个没有出错返回函数中的一个.其中cmask是9个常量(S_IR/W/XUSR.S_IR/W/XGRP.S_IR/W/XOTH)中的若干个按位“或”构成的. #include<sys/stat.h> mode_t umask(mode_t cmask); //返回值:之前的文件模式创建屏蔽字 #include<apue.h> #include<fcntl.h> #define RWRWRW (S_IRU

APUE(4)---文件和目录 (1)

一.引言 上一章执行I/O的基本函数(打开文件.读文件和写文件),本章将描述文件系统的其他特征和文件的性质,我们将从stat函数开始,并逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,我们将说明修改这些属性的各个函数. 二.函数stat.fstat.fstatat和lstat #include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); int fstat(i

APUE读书笔记: 文件和目录

stat, fstat, fstatat 和 lstat函数: stat函数返回与pathname命名文件相关的信息结构: fstat函数返回已在文件描述符fd打开文件的相关信息: lstat函数与stat函数类似,但当命名文件是一个符号链接时,返回该符号链接的相关信息: fstatat函数为相对于当前打开目录(有fd参数指向)的路径名返回文件统计信息. struct stat 的具体定义如下图: 文件类型: 文件类型包括:普通文件,目录文件,块特殊文件,字符特殊文件,FIFO,套接字和符号链接

APUE(4)---文件和目录 (3)

十三.函数rename和renameat #include <stdio.h> int rename(const char *oldname, const char *newname); int renameat(int oldfd, const char *oldname, int newfd, const char *newname); 文件或目录可以用rename函数或者renameat函数进行重命名.有几种情况需要说明: 1.如果oldname指的是一个文件而不是目录,那么为该文件或符