1.打开文件的函数open,第一个参数表示文件路径名,第二个为打开标记,第三个为文件权限

代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h> int main()
{
int fd; fd = open("testopen1",O_CREAT,); printf("fd = %d\n",fd); return ; }

效果测试:打印打开文件返回的描述符为3,同时创建了文件testopen1

2.创建文件函数creat和关闭函数close

使用代码

#include <fcntl.h>
#include<stdio.h>
#include <unistd.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int fd;
if(argc < )
{
printf("please run use ./app filename\n");
exit();
} fd = creat(argv[],); printf("fd = %d\n",fd);
close(fd); return ; }

测试结果:

3.写文件函数write,第一个参数表示要写入的文件的描述符,第二个参数表示要写入的内容的内存首地址,第三个参数表示要写入内容的字节数;

写入成功返回写入的字节数,失败返回-1

测试代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include <unistd.h>
#include<stdlib.h>
#include<string.h> int main(int argc,char *argv[])
{
int fd;
if(argc < )
{
printf("please run use ./app filename\n");
exit();
} fd = open(argv[],O_CREAT | O_RDWR,); if(fd == -)
{
printf("open file failed!");
exit();
} char *con = "hello world!"; int num = write(fd,con,strlen(con));
printf("write %d byte to %s",num,argv[]); close(fd); return ; }

结果:hello world!写入hello文件成功

查看当前系统最大打开文件个数

4.读取文件read,第一个参数是文件描述符,第二个参数是存储读取文件内容的内存首地址,第三个参数是一次读取的字节数

测试代码,完成文件复制

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include <unistd.h>
#include<stdlib.h>
#include<string.h> int main(int argc,char *argv[])
{
int fd_src,fd_des;
char buf[]; if(argc < )
{
printf("please run use ./app srcfilename desfilename\n");
exit();
} fd_src = open(argv[],O_RDONLY);
fd_des = open(argv[],O_CREAT | O_WRONLY | O_TRUNC,); if(fd_src != - && fd_des != -)
{
int len = ;
while(len = read(fd_src,buf,sizeof(buf)))
{
write(fd_des,buf,len);
} close(fd_src);
close(fd_des);
} return ; }

效果查看,可见实现了文件open.c的拷贝

linux系统编程之文件IO的更多相关文章

  1. Linux系统编程:简单文件IO操作

    使用Linux的文件API,经常看见一个东西,叫做文件描述符. 什么是文件描述符? (1)文件描述符其实实质是一个数字,这个数字在一个进程中表示一个特定的含义,当我们open打开一个文件时,操作系统在 ...

  2. linux系统编程之文件与io(一)

    经过了漫长的学习,C语言相关的的基础知识算是告一段落了,这也是尝试用写博客的形式来学习c语言,回过头来看,虽说可能写的内容有些比较简单,但是个人感觉是有史起来学习最踏实的一次,因为里面的每个实验都是自 ...

  3. linux系统编程之文件与io(五)

    上一节中已经学习了文件描述符的复制,复制方法有三种,其中最后一种fcntl还并未使用到,关于这个函数,不光只有复制文件描述符的功能,还有其它一些用法,本节就对其进行一一剖析: fcntl常用操作: 这 ...

  4. 【Linux 应用编程】文件IO操作 - 常用函数

    Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ...

  5. UNIX系统编程:文件IO(I)

    1.标准C库中访问文件用的是文件指针FILE *(stdin,stdout,stderr):对于linux系统编程而言,所有对设备或文件的操作都是通过文件描述符进行的 2.当打开或者创建一个文件的时候 ...

  6. Linux系统编程001--系统IO

    1. 文件系统:用来存储.组织.管理文件的一套方式.协议 2. 文件 文件的属性:i-node唯一表示一个文件的存在与否 文件的内容 3. Linux系统如何实现文件的操作? 点击查看代码 硬件层: ...

  7. linux系统编程之文件与IO(一):文件描述符、open,close

    什么是IO? 输入/输出是主存和外部设备之间拷贝数据的过程 设备->内存(输入操作) 内存->设备(输出操作) 高级I/O ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的 ...

  8. linux系统编程之文件与io(四)

    今天继续学习文件与io,主要是学习文件共享及文件.复制文件描述符,有点抽象,主要是概念上的理解,但是很重要,下面一一来分解: 文件共享: 回顾一下,在linux系统调用中,是通过文件描述符来访问文件的 ...

  9. linux系统编程之文件与io(二)

    今天继续学习文件与io,话不多说,开始进入正题: 文件的read和write系统调用: 说明:函数中出现在size_t和ssize_t是针对系统定制的数据类型:     下面以一个实现文件简单拷贝的示 ...

随机推荐

  1. sql还原(.mdf文件还原)

    第一步: 把备份文件放到目录:C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA (默认)(这里用 MyDB.md ...

  2. iptables实用教程(二):管理链和策略

    概念和原理请参考上一篇文章"iptables实用教程(一)". 本文讲解如果管理iptables中的链和策略. 下面的代码格式中,下划线表示是一个占位符,需要根据实际情况输入参数, ...

  3. angularjs下拉框实现渲染html

    angualrjs处于安全的考虑,插值 指令会对相应字符串进行过滤,避免出现html攻击.但是在一些时候,我们需要渲染html,比如实现一个分级的下拉框,代码如下: <body ng-app=& ...

  4. 浅谈MVC Form认证

    简单的谈一下MVC的Form认证. 在做MVC项目时,用户登录认证需要选用Form认证时,我们该怎么做呢?下面我们来简单给大家说一下. 首先说一下步骤 1.用户登录时,如果校验用户名密码通过后,需要调 ...

  5. RSA加密通信小结(四)--RSA加解密的实际操作与流程小结

    在上一篇文章中,我们已经将密钥的生成方法和流程,归纳总结.而本篇主要是讲如何利用密钥进行加解密. 首先,在上一篇文章中的我们生成了很多密钥,证书等等. 在上述生成的文件中,接收服务端加密报文:pkcs ...

  6. Navicat连接报错:cannot load OCI DLL,126

    32位系统下报错:cannot load OCI DLL,126 解决方法:navicat 菜单中 -工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 在win ...

  7. position定位和添加阴影

    定位:style="position: absolute; bottom: 0; width: 100%;background: rgb(255, 255, 255);padding-bot ...

  8. 关于MATLAB处理大数据坐标文件2017528

    第一次提交数据 增加了部分特征 3000数据测试中得分99 但是10万数据出现过拟化现象,正确率下降 总结:1.某些特征数据本身波动不大应该考虑放弃 2.一些特征虽然表面觉得差异显而易见,但是数据表达 ...

  9. 基于两种架构的ETL实现及ETL工具选型策略

    企业信息化建设过程中,业务系统各自为政.相互独立造成的"数据孤岛"现象尤为普遍,业务不集成.流程不互通.数据不共享--.这给企业进行数据的分析利用.报表开发等带来了巨大困难.在此情 ...

  10. SQL检测开始日期 结束日期 是否存在交叉

    检测开始日期 结束日期 是否存在交叉 "+tj+" and ((starttime>="+starttime+" and starttime<=&q ...