Linux中基础IO

3人阅读 评论(0) 收藏 举报

一、open/read/write/close等文件相关系统调用

  • open、read、write、close等系统函数称为无缓冲I/O(Unbuffered I/O)函数,用户程序在读写文件时既可以调用C标准I/O库函数,也可以直接调用底层的Unbuffered I/O函数.

那么在讨论Linux环境下基础IO函数前,我们先看看之间接触过的C标准I/O库函数

C标准I/O库函数

hello.c写文件:

int main(){
	FILE* fp = fopen("myfile", "w");
	if (!fp){
		printf("fopen error!\n");
	}
	const char *msg = "hello\n";
	int count = 4;
	while (count--){
		fwrite(msg, strlen(msg), 1, fp);
	}
	fclose(fp);
	return 0;
}

hello.c读文件

int main(){
	FILE* fp = fopen("myfile", "r");
	if (!fp){
		printf("fopen error!\n");
	}
	char buf[1024];
	const char *msg = "hello\n";
	while (1){
		ssize_t s = fread(buf, 1, strlen(msg), fp);
		if (s > 0){
			buf[s] = 0;
			printf("%s", buf);
		}
		if (feof(fp)){
			break;
		}

	}
	fclose(fp);
	return 0;
}

C默认会打开三个输入输出流,分别时stdin,stdout,stderr;

仔细观察发现,这三个流的类型都是FILE*,fopen返回值类型,文件指针。

打开文件的方式:

1、“r”以只读方式打开一个文件;

2、“w”以只写方式打开一个文件;

3、“a”打开一个文件追加;

4、“rb”以只读方式打开一个二进制文件;

5、“rw”以只写方式打开一个二进制文件;

6、“ra”打开一个二进制文件追加;

7、"r+"以读写方式打开一个文件;

8、“w+”以读写方式建立一个文件;

9、“a+”以读写方式打开一个文件追加;

10、“rb+”以读写方式打开一个二进制文件;

11、“wb+”以读写方式建立一个二进制文件;

12、“ab+”以读写方式打开一个二进制文件追加。


查看评论

Linux基础入门

Linux是每一个程序员都应该掌握的操作系统。本套课程主要介绍Linux的基础知识、常用Shell命令和系统管理,帮助开发者熟练掌握Linux系统的使用和管理。
  • 2015年01月06日 15:33

【Linux基础】Linux的5种IO模型详解

引入为了更好的理解5种IO模型的区别,在介绍IO模型之前,我先介绍几个概念1.进程的切换(1)定义为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。即从用户...
  • baiye_xing
  • baiye_xing
  • 2017-07-04 16:57:34
  • 226

Linux网络编程--IO模型基础

IO的方式有阻塞IO、非阻塞IO模型、IO复用、信号驱动、异步IO等,本文以UDP为例大概介绍这几种IO模型的基础知识和原理。 1.阻塞IO 阻塞IO是最通用的IO类型,使用这种模型进行数据接收的...
  • u010193457
  • u010193457
  • 2015-09-10 16:33:11
  • 1169

Linux 应用开发 - 必须掌握的 5 个底层 IO 函数

Linux 应用开发 - 必须掌握的 5 个底层 IO 函数
  • qq_22075977
  • qq_22075977
  • 2017-07-28 18:29:07
  • 674

Linux下的基础IO操作

fopen,fwrite,fread,fclose,open,write,read,close
  • lvyibin890
  • lvyibin890
  • 2017-12-15 15:12:36
  • 45

Java 高级—— IO 基础

一、File 类 先看一下File 类的定义 public class File extends Object implements Serizliable Comparable 从定义看,File类...
  • zqixiao_09
  • zqixiao_09
  • 2016-01-26 20:52:59
  • 990

Linux文件IO(文件的读写)

内容源于朱友鹏老师的课程笔记的学习整理,如有侵权,请告知删除。
  • oqqHuTu12345678
  • oqqHuTu12345678
  • 2017-04-02 15:14:48
  • 706

linux系统中的IO操作

同步IO分为阻塞IO、非阻塞IO、信号驱动的IO和多路转接IO。 阻塞IO: 一直阻塞进程直到完成IO操作。 非阻塞IO: 有数据时进行IO操作,没有数据时立即返回不阻塞进程。 信号驱动IO: 当...
  • c1194758555
  • c1194758555
  • 2016-10-22 19:39:32
  • 815

Java基础总结(二)----集合、多线程、io、虚拟机等

Java集合java集合框架的结构List接口List接口通常表示一个列表(数组、队列、链表、栈等),其中的元素可以重复,常用实现类为ArrayList和LinkedList,另外还有不常用的Vect...
  • wgyscsf
  • wgyscsf
  • 2017-04-04 22:32:08
  • 2598

JavaIO基础

JavaIO基础在java程序中,对于数据的输入/输出操作以“流”(stream)方式进行:J2SDK提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据。java.i...
  • qq_27952215
  • qq_27952215
  • 2017-10-25 10:54:05
  • 57
    个人资料
    持之以恒
    等级:
    访问量: 1048
    积分: 222
    排名: 33万+
    文章分类