Linux系统编程--文件IO操作
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操作的更多相关文章
- linux系统编程--文件IO
系统调用 什么是系统调用: 由操作系统实现并提供给外部应用程序的编程接口.(Application Programming Interface,API).是应用程序同系统之间数据交互的桥梁. C标准函 ...
- Linux学习记录--文件IO操作相关系统编程
文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...
- Linux系统编程@文件操作(一)
只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...
- Linux系统编程@终端IO
Linux系统中终端设备种类 终端是一种字符型设备,有多种类型,通常使用tty 来简称各种类型的终端设备.终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn ) ,伪终端(/dev ...
- 系统编程--文件IO
1.文件描述符 文件描述符是一个非负整数,当打开一个现有文件或创建一个新文件时候,内核向进程返回一个文件描述符,新打开文件返回文件描述符表中未使用的最小文件描述符.Unix系统shell使用文件描述符 ...
- linux系统编程:IO读写过程的原子性操作实验
所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断. 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打断你们高 ...
- Linux系统编程--文件描述符的复制dup()和dup2()【转】
本文转载自:http://blog.csdn.net/tennysonsky/article/details/45870459 dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个 ...
- linux系统相关文件和操作
查看内核: uname -r [root@server0 ~]# uname -r -.el7.x86_64 [root@server0 ~]# 查看版本: cat /etc/redhat-rele ...
- Linux系统编程—信号集操作函数
先来回顾一下未决信号集是怎么回事. 信号从产生到抵达目的地,叫作信号递达.而信号从产生到递达的中间状态,叫作信号的未决状态.产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集, ...
随机推荐
- 51Nod 1001 数组中和等于K的数对 Label:Water
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...
- BZOJ 3732 题解
3732: Network Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ...
- 【FZU】1977 Pandora adventure
http://acm.fzu.edu.cn/problem.php?pid=1977 题意:n×m的网格,有3种格子,'O'必须经过.'*'可以选择经过.'X'不能经过.现在要求路径经过所有'O'且是 ...
- URAL 1287. Mars Canals
题目链接 这题挺水,看懂了,就OK.卡了几下内存,还是卡过了. #include <iostream> #include <cstdio> #include <cstri ...
- 期望dp BZOJ3450+BZOJ4318
BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...
- weblogic部署项目包,报空指针错误
贴出 报错代码 <weblogic> <> <> <1479765377228> <BEA-240003> <Console enco ...
- AJAX-跨域解决之 JSONP
(一)AJAX ajax 就是从某个文件中去找相关的数据,把数据拿过来以后,利用数据 分析数据 去做我们想做的事情 分两部分:拿数据 用数据 oUsername ...
- CSS+DIV两栏式全屏布局
在网上找了很久,发现大部分都是固定宽度设置两栏,全屏情况下的布局很少.最后终于完成了,写出来备查,也供大家参考. <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- Connect模块解析
Connect模块背景 Node.js的愿望是成为一个能构建高速,可伸缩的网络应用的平台,它本身具有基于事件,异步,非阻塞,回调等特性,这在前几篇专栏中有过描述. 正是基于这样的一些特性,Node.j ...
- Odoo 采购单 加盖 电子公章
简单说一下思路,第一步呢是要有一个电子公章的图片,第二步就是把这张图片添加到生成的PDF文件中. 最后的效果图如下: