Linux思想即,Linux系统下一切皆文件。

一、对文件操作的几个函数

1.打开文件open函数

int open(const char *path, int oflags);

int open(const char *path, int oflags,mode_t mode);

– 参数path表示:路径名或者文件名。路径名为绝对路径名。

– 参数oflags表示:打开文件所采取的动作。

下面几个为常用参数:

O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写;O_NOCTTY如果路径指向终端,则不将设备作为此进程的控制终端;O_NDELAY非阻塞方式操作文件。

– mode表示:设置创建文件的权限。权限的宏定义很麻烦,可以直接用数字替代

– 返回值:出错返回-1;否则返回文件句柄

2.打开文件creat函数(其主要作用为创建文件):

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

– 参数path表示:路径名或者文件名。路径名为绝对路径名。

– 参数oflags表示:打开文件所采取的动作。

• O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写

3.关闭文件close函数:

int close(int fd);

参数为打开文件的句柄

4.写文件write函数:

• ssize_t write(int fd, const void *buf, size_t count);

– 参数fd表示:使用open 函数打开文件之后返回的句柄。

– 参数*buf表示:写入的数据

– 参数count表示:最多写入字节数

– 返回值:出错-1,;其它数值表示实际写入的字节数

5.读文件read函数:

• ssize_t read(int fd,void *buf,size_t len);

– 参数fd:使用open 函数打开文件之后返回的句柄

– 参数*buf:读出的数据保存的位置

– 参数len:每次最多读len 个字节

– 返回值:错误返回-1,执行成功返回实际读取值

二、代码编写

对文件的操作一般必需要用到以下几步:

1、对文件的IO操作需要的头文件基本是一样的,都需要用到以下几个头文件。实际编程中我们可以从终端里通过man命令查找然后复制过来直接用。例如,在Ubuntu终端里输入man 2 read 后就可以查到关于read的用户手册,其中对read的详细介绍就包括头文件等等。其他函数用相同的方法都可查询到。

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <string.h>

2、在主函数里面定义一个整形的变量,来保存open返回的句柄值;

3、定义字符串,保存文件路径;

4、为后面要用到的读写函数创建缓冲区数组,或ssize_t变量

5、采用一个if语句判断打开文件是否正确,正确返回句柄值,不正确打印提示信息;

6、文件打开正确后,调用相应的读写函数,传入正确参数进行相应的读写操作。

7、文件进行读写完操作后一定要通过close函数关闭,否则文件一直被占用就会影响其他程序的运行。

三、运行结果

1、open运行结果

/

2、creat运行结果

3、read运行结果

4、write运行结果

用vi打开/bin下的testwrite文件可以看到如下图所示

Linux系统编程--文件IO操作的更多相关文章

  1. linux系统编程--文件IO

    系统调用 什么是系统调用: 由操作系统实现并提供给外部应用程序的编程接口.(Application Programming Interface,API).是应用程序同系统之间数据交互的桥梁. C标准函 ...

  2. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  3. Linux系统编程@文件操作(一)

    只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...

  4. Linux系统编程@终端IO

    Linux系统中终端设备种类  终端是一种字符型设备,有多种类型,通常使用tty 来简称各种类型的终端设备.终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn ) ,伪终端(/dev ...

  5. 系统编程--文件IO

    1.文件描述符 文件描述符是一个非负整数,当打开一个现有文件或创建一个新文件时候,内核向进程返回一个文件描述符,新打开文件返回文件描述符表中未使用的最小文件描述符.Unix系统shell使用文件描述符 ...

  6. linux系统编程:IO读写过程的原子性操作实验

    所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断. 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打断你们高 ...

  7. Linux系统编程--文件描述符的复制dup()和dup2()【转】

    本文转载自:http://blog.csdn.net/tennysonsky/article/details/45870459 dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个 ...

  8. linux系统相关文件和操作

    查看内核: uname -r [root@server0 ~]# uname -r -.el7.x86_64 [root@server0 ~]# 查看版本: cat  /etc/redhat-rele ...

  9. Linux系统编程—信号集操作函数

    先来回顾一下未决信号集是怎么回事. 信号从产生到抵达目的地,叫作信号递达.而信号从产生到递达的中间状态,叫作信号的未决状态.产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集, ...

随机推荐

  1. C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio ...

  2. Objective-c的内存管理MRC与ARC

    Objective-c的内存管理MRC与ARC   Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ...

  3. 记录load data infile 的用法

    load data local infile 'd:/1.txt' into table tcm.wm_dis_category fields terminated by';' lines termi ...

  4. VTK GetScalarPointer() and GetScalarComponentAsFloat() not work

    I am using VTK 5.10.1 with VS 2010, and the following example does not work on my machine: http://ww ...

  5. winfrom 无边框窗体移动和阴影

    无边框窗体移动: //窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [ ...

  6. HTML第二节课

    表单 <form id="" name="" method="post/get" action=""> &l ...

  7. django1.9 创建项目和app并初始化项目

    创建项目: django-admin startproject  mytest04 创建app: python manage.py startapp app04 配置:settings.py 1. 2 ...

  8. Centos7 安装codeblock( 转载)

    1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可 yum install gcc yum install gcc-c++ 2.安装gtk2-deve ...

  9. 如果使用 Excel5 ,输出的内容应该是GBK编码

    下面就是php导出excel的程序 <?phpini_set("display_errors",1);//是否显示报错信息set_include_path(get_inclu ...

  10. Lua语言

    下载使用Subline作为编辑器 1. 2.函数使用 function sayHello() print ('hello torch') end 3.定义变量 a print (a) 4.引入文件 r ...