博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Linux】文件操作函数(系统调用函数)
阅读量:5861 次
发布时间:2019-06-19

本文共 3281 字,大约阅读时间需要 10 分钟。

  • 重点在于学习——思路与方法
  • 举一反三

1143923-20170803175346287-899161083.jpg

一、文件描述符

  • 系统分配给文件的数字编号

二、函数学习

1143923-20170803175322756-1558691529.jpg

P.S.Man命令使用方法

manual 前三个章节 命令;系统调用函数;库函数    man read //read命令    man 2 read //系统调用函数read

第2类 系统调用文件编程类

2.1 打开文件

2.1.1 函数名
open
2.1.2 函数原形
int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);
2.1.3 函数功能
open and possibly create a file or device
2.1.4 所属头文件
#include 
#include
#include
2.1.5 返回值
return the new file descriptor, or -1 if an error occurred .
2.1.6 参数说明
pathname    //文件路径名flags       //access mode:O_RDONLY,O_WRONLY,or O_RDWR.more flags to search——man COMMAND -O_APPEND:以追加方式打开文件-O_CREAT:当打开的文件不存在的时候,创建该文件mode: // if flag = O_CREAT , mode 用于设置新创建文件的访问权限P.S.参数可位或fd = open ("/home/test.c".O_RDWR|O_CREAT,0755);

2.2 创建文件

2.2.1 函数名
creat
2.2.2 函数原形
int creat(const char *pathname, mode_t mode);
2.2.3 函数功能
creat() is equivalent to open()  with  flags  equal  to O_CREAT|O_WRONLY|O_TRUNC.创建一个文件,并以只写的方式打开该文件
2.2.4 所属头文件
#include 
#include
#include
2.2.5 返回值
success:file descriptiorfali:    -1
2.2.6 参数说明
pathname    //文件路径名mode        //新建文件的读写权限设置

2.3 关闭文件

2.3.1 函数名
close
2.3.2 函数原形
int close(int fd);
2.3.3 函数功能
关闭一个打开的文件
2.3.4 所属头文件
#include 
2.3.5 返回值
success:0error  :-1
2.3.6 参数说明
fd :待关闭文件的file descriptor

2.4 读文件

2.4.1 函数名
read
2.4.2 函数原形
//-man 2 readssize_t read(int fd, void *buf, size_t count);
2.4.3 函数功能
从一个打开的文件中读取数据
2.4.4 所属头文件
#include 
2.4.5 返回值
success:返回读取的字节数error:-1
2.4.6 参数说明
fd :待读取数据的文件的file descriptorcount:希望读取的字节数buf:  读取来的数据存到buf指向的缓冲区

2.5 写文件

2.5.1 函数名
write
2.5.2 函数原形
//-man 2 readssize_t write(int fd, const void *buf, size_t count);
2.5.3 函数功能
向一个打开的文件写入数据
2.5.4 所属头文件
#include 
2.5.5 返回值
success:写入到文件里的字节数error:-1
2.5.6 参数说明
fd :待写入数据的文件的file descriptorcount:希望写入的字节数buf:  要写入数据的存放位置

2.6 重定位文件读写位置

2.6.1 函数名
lseek
2.6.2 函数原形
off_t lseek(int fd, off_t offset, int whence);
2.6.3 函数功能
reposition read/write file offset重新定位文件的读写位置(指针)
2.6.4 所属头文件
#include 
#include
2.6.5 返回值
success:返回移动后的文件指针距离文件开头的字节数位置  error:-1
2.6.6 参数说明
fd :待写入数据的文件的file descriptor  The lseek() function repositions the offset of the open file associated with the file descriptor fd to the argument  offset  according  to  the directive whence as follows:  //无论指针现在在何处,whence设置offset开始移动的起始位置   SEEK_SET          The offset is set to offset bytes.   SEEK_CUR          The offset is set to its current location plus offset bytes.   SEEK_END          The offset is set to the size of the file plus offset bytes.

2.7 复制文件描述符

2.7.1 函数名
dup
2.7.2 函数原形
int dup(int oldfd)
2.7.3 函数功能
复制一个文件描述符
2.7.4 所属头文件
#include 
2.7.5 返回值
success:返回新的文件描述符error: -1
2.7.6 参数说明
oldfd:待复制的旧的文件描述符

三、综合实例 ——手动实现cp命令功能

#include 
#include
#include
#include
void main(int argc,char **argv){ int fd_source; int fd_destination; char buf[512]; int count = 0;/*1.打开源文件*/ fd_source = open(argv[1],O_RDONLY);/*2.打开目标文件*/ fd_destination = open(argv[2],O_RDWR|O_CREAT,0666);/*3.读取源文件,循环分块读写*/ while(count = read (fd_source,buf,512)>0)/*4.将数据写入目标文件*/ { write(fd_destination,buf,count); }/*5.关闭文件*/ close(fd_source); close(fd_destination); }

转载于:https://www.cnblogs.com/Neo007/p/7281069.html

你可能感兴趣的文章
java 1.5和1.6的Override
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
LINUX的du命令详解
查看>>
域名 TTL 查询
查看>>
桥牌笔记:防止将牌失控
查看>>
HDU-1541 Stars 树状数组
查看>>
东西方啊文化冲突
查看>>
.net 常用类
查看>>
[转] Lazy evaluation
查看>>
python - 浮点数取整
查看>>
TabActivity中的Tab标签详细设置
查看>>
C# 性能优化之斤斤计较篇 一
查看>>
工作日处理函数(自定义节假日).sql
查看>>
accept函数
查看>>
【校赛小分队之我们有个女生】训练赛6
查看>>
iOS开发--TableView详细解释
查看>>
instanceof关键字
查看>>
Hadoop学习笔记(一)从官网下载安装包
查看>>
Linux设备管理(二)_从cdev_add说起
查看>>
总有一种声音(图片、文字……),让我们泪流满面
查看>>