Linux中基础IO

一、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+”以读写方式打开一个二进制文件追加。


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭