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系统编程—信号集操作函数
先来回顾一下未决信号集是怎么回事. 信号从产生到抵达目的地,叫作信号递达.而信号从产生到递达的中间状态,叫作信号的未决状态.产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集, ...
随机推荐
- ACM 田忌赛马
田忌赛马 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Here is a famous story in Chinese history. "That ...
- 给@dudu 一个idea
好长时间没写文章了,因为我最近一直在琢磨博客园如何才能成为一家上市公司,上市前我在博客园买点原始股,说不定就发了. 现在遇到错误总是先谷歌,谷歌背墙,在百度,百度不到在到博客园找 找看看 因为找找 ...
- 4分钟了解nano编辑器和简单命令 2015.10.6
nano感觉并不常用,但是偶尔遇到过几次. nano命令是一个类似VI的编辑器,但是更简单,其中的i,a等命令似乎可以用,但是有些命令不可以用.保存和退出最大的区别在于退出方式,如果你要保存所做的修改 ...
- HDU 4741 Save Labman No.004(计算几何)
题目链接 抄的模版...mark一下. #include <iostream> #include <cstring> #include <cstdio> #incl ...
- IE6、7绝对定位层被遮挡的原因(主要是父层决定的)
最近做项目,经常遇到IE7以下浏览器中.一些悬浮框被一些元素遮挡的问题,这些元素一般都是设置了position的.问题的根本在不是被设置绝对定位的元素上,而是在设置了相对定位的父元素上. 我查阅了 ...
- Jquery实现MD5加密
$.md5("你想要加密的字符串"); md5插件下载地址:http://xiazai.jb51.net/201003/yuanma/jquery_md5.rar <!DOC ...
- 数据库之SQL语法
-- 创建数据库CREATE DATABASE mytest; -- 创建表CREATE TABLE t_user( -- primary key 定义该列为主键列 -- AUTO_INCREMENT ...
- php修改指定文件的指定内容
<?php $origin_str = file_get_contents('路径/文件.txt'); $update_str = str_replace('qwe=0', 'qwe=1', $ ...
- centos下安装php后连接不上mysql
安装完php后需要安装php的扩展比如: 安装php的扩展yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xm ...
- 使用Fiddler的X5S插件查找XSS漏洞
OWASP top 10的安全威胁中的CrossSite Scripting(跨站脚本攻击),允许攻击者通过浏览器往网站注入恶意脚本.这种漏洞经常出现在web应用中需要用户输入的地方,如果网站有XSS ...