本文介绍: 5、根据1和4,操作系统在运行中,可能打开很多个文件,操作系统要不要管理打开的文件呢?它定义了新创建文件的权限。2、内容是数据,属性也是数据——存储文件,必须既存储内容,又存放数据。4、一个进程可以打开多个文件吗?多个进程可以打开多个文件吗?3、我们要访问一个文件的时候,都是要把这个文件先打开。表示文件所有者具有读写权限,其他用户只有读权限。6、文件按照是否被打开,分成:被打开的文件(这是一个字符串,指定要打开或创建的。它可以是文件的相对路径或绝对路径。),没有被打开的文件(打开文件的方式和行为。
一、基本概念
1、所有对文件的操作
5、根据1和4,操作系统在运行中,可能打开很多个文件,操作系统要不要管理打开的文件呢???需要,如何管理???先描述后组织
二、研究进程和被打开文件的关系
(一)w方式
- w:以写的方式打开,如果文件不存在就创建它
#include<stdio.h>
int main()
{
FILE *fp=fopen("log.txt","w");
if(NULL == fp)
{
perror("fopen");
return 1;
}
const char*msg = "hello worldn";
int cnt = 10;
while(cnt)
{
fputs(msg, fp);
cnt--;
}
fclose(fp);
return 0;
}
(二)a方式
#include<stdio.h>
int main()
{
FILE *fp=fopen("log.txt","a");
if(NULL == fp)
{
perror("fopen");
return 1;
}
const char *msg = "message.txtn";
fputs(msg,fp);
return 0;
}
三、认识系统接口,操作文件
man 2 open
NAME
open, creat - open and possibly create a file or device
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
(一)认识文件描述符
#include<stdio.h>
#define print1 1 //0001
#define print2 (1<<1) //0010
#define print3 (1<<2) //0100
#define print4 (1<<3) //1000
void print(int flags)
{
if(flags & print1) printf("hello 1n"); //检查 flags 中是否包含 print1 对应的标志位
if(flags & print2) printf("hello 2n");
if(flags & print3) printf("hello 3n");
if(flags & print4) printf("hello 4n");
else printf("Nonen");
}
int main()
{
print(print1); //输出了 hello 1,因为 print1 代表的标志位被设置
printf("------------n");
print(print1|print2);//输出了 hello 1 和 hello 2,因为 print1 和 print2 的标志位都被设置
printf("------------n");
print(print1|print2 | print3);
printf("------------n");
print(print3|print4);
printf("------------n");
print(print4);
return 0;
}
(二)举例
#include <stdio.h>
#include <unistd.h>//close的头文件
#include <string.h>//strlen的头文件
//下面三个是open的头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
umask(0);//更改掩码
int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC, 0666);
if(fd < 0)
{
perror("open");
return 1;
}
const char *msg="aaaaa";
write(fd,msg,strlen(msg));
close(fd);
return 0;
}
(三)理解文件
原文地址:https://blog.csdn.net/m0_63783532/article/details/134561228
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_7541.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。